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