C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

文字のASCII値の合計がC++でkで割り切れる長さkの部分文字列の数を見つけます


ここで、別の問題が発生します。ここでは、1つの文字列と別の整数値がkを指定します。文字のASCII値の合計がkで割り切れる長さkの部分文字列の数を見つける必要があります。

文字列が「BCGABC」であるとします。また、kの値は3です。ここで、文字列BCGのASCII合計は300、ABCのASCII合計は294で、どちらもk=3で割り切れます。

アプローチは簡単です。最初に、長さがkである最初の部分文字列の文字のASCII値を見つける必要があります。スライディングウィンドウ手法を使用して、ウィンドウの最初の文字のASCIIを減算し、ウィンドウをスライドした後に来る次の文字のASCIIを加算する必要があります。合計がkで割り切れる場合、各ステップでカウントを増やします。 。

#include <iostream>
using namespace std;
int countKLenSubstr(string str, int k) {
   int len = str.length();
   int sum = 0;
   int count = 0 ;
   for (int i = 0; i <len; i++)
      sum += str[i] ; //ASCII sum of first substring
   if (sum % k == 0)
      count++;
   for (int i = k; i < len; i++) {
      int prev_ascii = str[i-k]; //ASCII of the first character of the window
      sum -= prev_ascii;
      sum += str[i];
      if (sum % k == 0)
         count += 1;
   }
   return count ;
}
int main() {
   string s = "BCGABC" ;
   int k = 3 ;
   cout<<"Number of substrings: " << countKLenSubstr(s, k);
}

出力

Number of substrings: 2

  1. C++を使用して文字列の部分文字列の数を見つける

    この記事では、特定の文字列に形成できるサブ文字列(空ではない)の数を見つけるためのアプローチについて学習します。 Input : string = “moon” Output : 10 Explanation: Substrings are ‘m’, ‘o’, ‘o’, ‘n’, ‘mo’, ‘oo’, ‘on’, ‘moo’, ‘oon’ and &

  2. 文字のASCII値を検索するC++プログラム

    ASCII(情報交換のためのアメリカ標準コード)テーブルには、0から127の範囲の値を持つ128文字があります。 異なる文字のASCII値のいくつかは次のとおりです- 文字 ASCII値 A 65 a 97 Z 90 z 122 $ 36 & 38 ? 63 文字のASCII値を見つけるプログラムは次のとおりです- 例 #include <iostream> using namespace std; void printASCII(char c) {    int i