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

C++で指定されたパターンで終わる文字列をカウントします


文字列str[]の配列とパターン文字列patが与えられます。目標は、最後にパターンpatがあるstr[]の文字列要素を見つけることです。

strの各文字列をトラバースし、最後の文字をpatと比較します。増分と一致する場合

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

入力

str[]={ “kittens”, “hens”, “deers”, “dogs” } pat=”ens”

出力

Strings that end with given pattern: 2

説明

Strings “kitt-ens” and “h-ens” end with “ens”.

入力

str[]={ “tickets”, “wickets”, “bats”, “cricket” } pat=”et”

出力

Strings that end with given pattern: 1

説明

Strings “wick-et” ends with “et”.

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

  • 配列str[]とパターン文字列patを文字列化します。

  • Nはstr[]の文字列ではありません。

  • 関数endPattern(string str []、int n、string ptr)は、指定されたパターンで終了するstr内の文字列の数を返します

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

  • forループを使用してi=1からiまでトラバースします。

  • 各文字列str[i]をsとします。 slenをs.length()とします。

  • plen =ptr.lenght()を取ります。フラグ=1を取ります。

  • ここで、plenとslenを1ずつ減らして、文字列sとパターンptrの最後のインデックスを取得します。

  • plen>=0になるまでwhileループチェックを使用します。

  • s [slen]!=ptr[plen]がある場合。 flag =0に設定し、ループを解除します。それ以外の場合は、plenとslenをデクリメントして、最後から次の文字を確認します。

  • whileが終了した後、フラグがまだ1の場合は、ptrがsで発生するときにカウントをインクリメントします。

  • すべてのループの終了後のカウントを返します。これは、指定されたパターンで終わる文字列のカウントです。

#include <bits/stdc++.h>
using namespace std;
int endPattern(string str[], int n, string ptr){
   int count=0;
   for(int i=0;i<n;i++){
      string s=str[i];
      int slen=s.length();
      int plen=ptr.length();
      int flag=1;
      slen--; //last index
      plen--;
      while(plen>=0){
         if(ptr[plen]!=s[slen]){
            flag=0;
            break;
         }
         plen--;
         slen--;
      }
      if(flag==1)
         { count++; }
   }
   return count;
}
int main(){
   string patrn = "pes";
   int N = 4;
   string str[] = { "stripes", "cars", "ripes", "pipes" };
   cout <<"Strings that end with given pattern: "<<endPattern(str,N,patrn);
   return 0;
}

出力

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

Strings that end with given pattern: 3

  1. C++で指定された条件を満たす可能性のあるすべてのN桁の数値をカウントします

    このチュートリアルでは、与えられた条件を満たす可能なN桁の数字の数を見つけるプログラムについて説明します。 このために、整数が提供されます。私たちの仕事は、N桁の数字のどれが続くかを確認することです 数値+逆(数値)=10N -1 例 #include <bits/stdc++.h> using namespace std; //returning the count of numbers string count_num(int N){    if (N % 2 == 1)       return 0;   &n

  2. C++の辞書で特定のパターンに一致するすべての文字列を検索します

    辞書と呼ばれる文字列のリストがあると考えてください。別のパターン文字列があります。私たちの仕事は、パターンに一致する文字列を見つけることです。辞書が[“ abb”、“ xyz”、“ aab”、“ kmm”]のようで、パターンが“ stt”であるとすると、結果は“ abb”、“ kmm”になります。パターンには最初に1つの文字があり、次に2つの同じ文字があるため、同じパターン文字列に従います。 この問題を解決するために、パターンに一致する辞書の単語がエンコード後のパターンと同じハッシュを持つように、パターンをエンコードします。辞書内のすべての単語を繰り返し処理し、ハッシュが同じ場所に表示します