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

C++の文字列内の個別の部分文字列の数をカウントします


文字列strが与えられた問題によると、与えられた文字列内のすべての部分文字列をカウントする必要があります。サブストリングは、既存のストリングの一部であり、サイズが既存のストリング以下である可能性があるストリングです。

例を使って問題とその解決策を理解しましょう。

入力 − str ="wxyz";

出力 −個別の部分文字列の数は次のとおりです:10

説明 −カウントされる個別のサブストリングは−

wxyz, wxy, wx, w, xyz, xy, x, yz, y, z so their count is 10

入力 − str ="zzzz"

出力 −個別の部分文字列の数は次のとおりです:4

説明 −カウントされる個別のサブストリングは−

zzzz, zzz, zz, z

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

  • 文字列strを入力として受け取ります。

  • 空のunordered_set「myset」を宣言します。

  • iを0からループし、iが文字列のサイズより小さくなるまで1ステップ移動します。

    • 新しい文字列スペース""(空)を宣言します。

    • ループjは、iから始まり、jが文字列のサイズより小さくなるまで、一度に1ステップ移動します。

    • 各ステップのスペースの値をstr[j]

      で連結します
    • mysetにスペースを挿入します。

  • strのサイズを回答として印刷します。

#include<iostream>
#include<unordered_set>
using namespace std;
int main(){
   string str = "aaaa";
   unordered_set<string> myset;
   int i, j;
   for (i = 0; i < str.size(); ++i){
      string space = "";
      for (j = i; j < str.size(); ++j){
         space = space + str[j];
         myset.insert(space);
       }
   }
   cout <<"count of distinct substring is: " <<str.size();
   return 0;
}

出力

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

count of distinct substring is: 4

  1. 文字列に存在する部分文字列の数をカウントするPythonプログラム

    文字列sと部分文字列tがあるとします。 sでtが発生する回数を数える必要があります。 したがって、入力がs =abaabcaabababaab、t =aabの場合、部分文字列はab(aab)c(aab)abab(aab)であるため、出力は3になります。 これを解決するには、次の手順に従います- cnt:=0 0から(sのサイズ-tのサイズ)の範囲のiの場合、do s[インデックスiからiへ+t-1のサイズ]の部分文字列がtと同じである場合、 cnt:=cnt + 1 return cnt 例 理解を深めるために、次の実装を見てみましょう def solve(

  2. Pythonの文字列のすべての部分文字列の個別の文字数をカウントするプログラム

    小文字の文字列sがあるとすると、sのすべての部分文字列で異なる文字数の合計を見つける必要があります。答えが非常に大きい場合は、結果mod 10 ^ 9+7を返します。 したがって、入力がs =xxyのような場合、サブストリングとそのカウントは-であるため、出力は6になります。 x:1 x:1 「y」:1 xx:0( xは区別されないため) 「xy」:2 xxy:1( x は区別されないため) これを解決するには、次の手順に従います- m:=10 ^ 9 + 7 prev_seen:=新しい空のマップ ans:=0