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

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

  1. C++でバイナリ部分文字列をカウントする

    文字列sがあるとすると、同じ数の0と1を持つ連続するサブ文字列の数を見つける必要があり、これらのサブ文字列のすべての0とすべての1が連続してグループ化されます。サブストリングが複数回発生する場合は、発生回数がカウントされます。 したがって、入力が「11001100」の場合、サブストリングは「1100」、「10」、「0011」、「01」、「1100」、「10」であるため、出力は6になります。 これを解決するには、次の手順に従います- サイズ2の配列cntを定義し、これに0を入力します res:=0 iを初期化する場合:=0、i

  2. C ++の入力(a、b)から「a」で開始および終了するDFAを構築するプログラム

    文字「a」と「b」のDFA文字列があり、文字「a」で開始および終了する必要がある場合、タスクは、文字列がDFAを介して「a」で開始および終了するかどうかを確認することです。 DFA(Deterministic Finite Automata)とは何ですか? 理論計算機科学の一分野である計算理論では、決定性有限オートマトンは、記号の文字列を受け入れるか拒否する有限状態マシンです。決定論的とは、実行する計算の一意性を指します。 DFAで文字列を検索する場合、文字列は入力(a、b)の「a」で開始および終了する必要があります。メモリの概念はなく、現在の文字しか保存できないため、DFAは提供さ