C++で文字Xで始まり文字Yで終わる部分文字列をカウントします
文字列strが与えられます。目標は、開始文字が文字Xと同じで、終了文字が文字Yと同じstr内の部分文字列の数をカウントすることです。たとえば、入力が「artact」でX ='a'およびY='t'の場合、サブストリングは「art」、「act」、「artact」になります。カウントは3です。
例を挙げて理解しましょう。
入力 − str =” abcccdef” X =’a’ Y =’c’
出力 −文字Xで始まりYで終わる部分文字列の数は− 3
説明 −部分文字列は
“abc”, “abcc”, “abccc”. Total 3.
入力 − str =” tempest” X =’t’ Y =’t’
出力 −文字Xで始まりYで終わる部分文字列の数は− 3
説明 −部分文字列は−
“t” , “tempest” , “t”. Total 3
以下のプログラムで使用されているアプローチは次のとおりです
文字列をトラバースし、Xのカウントをインクリメントします。Yが検出された場合は、Xで始まりYで終わる文字列のカウントにXカウントを追加します。
-
文字列strを取ります。長さをstr.size()として計算します。
-
関数X_Y(string str、int length、char X、char Y)は、文字列str、文字X、Yを受け取り、Xで始まりYで終わるstrのサブストリングの数を返します。
-
初期カウントを0とします。
-
x_totalをstrの文字Xのカウントとして取ります。
-
forループを使用してstrをトラバースします。 i=0からi
-
str [i] ==Xの場合、str内のXのカウントをインクリメントします(x_total ++)。
-
str [i] ==Yの場合、カウントにx_totalを追加します。 Xが存在しない場合、x_totalは0になります。それ以外の場合、YはXから始まる部分文字列の終了文字です。
-
目的の結果としてカウントを返します。
例
#include <bits/stdc++.h> using namespace std; int X_Y(string str, int length, char X, char Y){ int count = 0; int x_total = 0; for (int i = 0; i < length; i++){ if(str[i] == X){ x_total++; } if (str[i] == Y){ count = count + x_total; } } return count; } int main(){ string str = "defaabbcchhkl"; int length = str.size(); char X = 'd'; char Y = 'a'; cout<<"Count of substrings that starts with character X and ends with character Y are: "<<X_Y(str, length, X, Y); return 0; }
出力
上記のコードを実行すると、次の出力が生成されます-
Count of substrings that starts with character X and ends with character Y are: 2
-
C++でバイナリ部分文字列をカウントする
文字列sがあるとすると、同じ数の0と1を持つ連続するサブ文字列の数を見つける必要があり、これらのサブ文字列のすべての0とすべての1が連続してグループ化されます。サブストリングが複数回発生する場合は、発生回数がカウントされます。 したがって、入力が「11001100」の場合、サブストリングは「1100」、「10」、「0011」、「01」、「1100」、「10」であるため、出力は6になります。 これを解決するには、次の手順に従います- サイズ2の配列cntを定義し、これに0を入力します res:=0 iを初期化する場合:=0、i
-
C ++の入力(a、b)から「a」で開始および終了するDFAを構築するプログラム
文字「a」と「b」のDFA文字列があり、文字「a」で開始および終了する必要がある場合、タスクは、文字列がDFAを介して「a」で開始および終了するかどうかを確認することです。 DFA(Deterministic Finite Automata)とは何ですか? 理論計算機科学の一分野である計算理論では、決定性有限オートマトンは、記号の文字列を受け入れるか拒否する有限状態マシンです。決定論的とは、実行する計算の一意性を指します。 DFAで文字列を検索する場合、文字列は入力(a、b)の「a」で開始および終了する必要があります。メモリの概念はなく、現在の文字しか保存できないため、DFAは提供さ