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

C ++の文字列での「1(0+)1」パターンの出現回数


0、1、その他のアルファベットを含む文字列strが与えられます。また、「1(0+)1」の形式のパターンも含まれています。ここで、0 +は、連続する0の任意の数(> 0)を意味します。目標は、文字列str内のそのようなパターン(「1(0+)1」)を見つけることです。

例を挙げて理解しましょう

入力 − str =“ abb010bb10111011”

出力 −文字列内の「1(0+)1」パターンの出現回数は− 2

説明 − str内のパターンが強調表示されます:「abb010bb10111011」、「abb010bb10111011」

入力 − str =“ 01001011001001100”

出力 −文字列内の「1(0+)1」パターンの出現回数は− 4

説明 − str内のパターンが強調表示されます:「01001011001001100」、「01001011001001100」、「01001011001001100」、「01001011001001100」

以下のプログラムで使用されているアプローチは次のとおりです

すべてのパターンが1で始まり、1で終わることがわかります。フラグ変数check =1を使用して最初の1をマークし、すべての0をスキップします。

その他の文字(0でも1でもない)については、チェックを0に設定してください。

別の1が見つかり、フラグチェックが1の場合、前の値が0であるかどうかを確認します。はいの場合、前の0が2つの値の間にあるためカウントをインクリメントします。 0または1以外のセットについては、もう一度0としてチェックしてください。

  • 入力文字列をstrとして取得します。

  • 関数Pattern_occurrences(string str、int length)は、文字列とその長さを取得し、文字列内の「1(0+)1」パターンの出現回数を返します

  • 初期カウントを0とします。

  • 最初はフラグ変数チェックを0とします。

  • forループを使用してstrをトラバースします。インデックスi=0からi

  • 現在の文字str[i]が1で、チェックが0の場合、チェックを1に設定して続行します。

  • 現在の文字str[i]が1で、チェックが1の場合。次に2番目の1です。前の値str [i-1]が0であるかどうかをチェックします。はいの場合、パターンが見つかりました。インクリメントカウント。

  • 現在の文字が0でも1でもない場合、パターンの一部になることはありません。チェックを0に設定します。次に遭遇した1は、次のパターンの開始と見なされます(存在する場合)。

  • 最後に、カウントにはstr内にそのようなパターンがいくつかあります。

  • 結果としてカウントを返します。

#include<iostream>
using namespace std;
int Pattern_occurrences(string str, int length){
   int count = 0;
   bool check = 0;
   for (int i = 0; i < length ; i++){
      if (str[i] == '1' && check == 1){
         if (str[i - 1] == '0'){
            count++;
         }
      }
      if (str[i] == '1' && check == 0){
         check = 1;
         continue;
      }
      if (str[i] != '0' && str[i] != '1'){
         check = 0;
      }
   }
   return count;
}
int main(){
   string str = "01010111011";
   int length = str.length();
   cout<<"Count of occurrences of a “1(0+)1” pattern in a string are: "<< Pattern_occurrences(str, length);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Count of occurrences of a “1(0+)1” pattern in a string are: 3

  1. 文字列内の単語の出現をカウントするC#プログラム

    最初に文字列を設定します- string str = "Hello World! Hello!"; 次に、文字列で「Hello」という単語が出現していないか確認し、ループスルーします- while ((a = str1.IndexOf(pattern, a)) != -1) {    a += pattern.Length;    count++; } 例 次のコードを実行して、文字列内の単語の出現回数をカウントできます。 using System; class Program {    static voi

  2. Pythonで文字列内の文字の出現をカウントします

    文字列と文字が与えられます。特定の文字列で特定の文字が繰り返される回数を調べたいのです。 範囲と長さあり インデックスを使用してアクセスされる文字列に存在するすべての文字と文字を一致させるために、forループを設計します。 range and len関数は、文字列の左から右に移動するときにマッチングを実行する必要がある回数を決定するのに役立ちます。 例 Astr = "How do you do" char = 'o' # Given String and Character print("Given String:\n", Astr)