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

C++で指定された文字列のすべての部分文字列で発生する母音の数を数えます


英語のアルファベットを含む文字列strが与えられます。目標は、strのすべての部分文字列で発生する母音の数を見つけることです。文字列が「abcde」の場合、サブ文字列は「a」、「b」、「c」、「d」、「e」、「ab」、「bc」、「cd」、「de」、「abc」、 「bcd」、「cde」、「abcd」、「bcde」、「abcde」。これらの部分文字列の母音の数は10です。(aおよびe)

入力

str = ”aloe”

出力

Count the number of vowels occurring in all the substrings of given string are:
14

説明

The substrings are:
“a”, “l”, “o”, “e”, “al”, “lo”, “oe”, “alo”, “loe”, “aloe”. Total vowels in these are: 14

入力

str=”http”

出力

Count the number of vowels occurring in all the substrings of given string are:
0

説明

The substrings are:
“h”, “t”, “t”, “p”, “ht”, “tt”, “tp”, “htt”, “ttp”, “http”. Total vowels in these are: 0

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

このアプローチでは、ベクトルvecを作成します。これは、vec[i]のすべてのサブストリングでのi番目の文字の出現回数を格納します。

0番目の文字は、n個のサブ文字列で発生します。nは文字列strの長さです。

i番目の文字は、それを含むすべての部分文字列(n-i)+ i番目の文字と前の文字を含む部分文字列の数(arr [i-1])-前の文字のみによって形成される部分文字列の数(i)。

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

  • 関数substring_vowels_count(string str、int length)は、strとその長さを取り、指定された文字列のすべての部分文字列で発生する母音の数を返します。

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

  • 整数ベクトルvecを取ります。

  • forループを使用してvecをi-0からi

  • i =0の場合、0番目の文字の場合、このカウントは長さです。 vec [0] =lengthusingpush_back[length]を設定します。

  • push_back(temp_1 + temp_2)wheretemp_1=length-1およびtemp_2=vec[i-1]-iを使用して設定された他のすべての文字の場合。

  • ここで、forループを使用してstrを再度トラバースし、各str [i]を母音(a、e、i、o、またはu)として使用します。カウントするvec[i]を追加します。

  • 最後に、サブストリング内の母音の出現総数がカウントされます。

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

#include <bits/stdc++.h>
using namespace std;
int substring_vowels_count(string str, int length){
   int count = 0;
   vector<int> vec;
   for (int i = 0; i < length; i++){
      if (i == 0){
         vec.push_back(length);
      } else {
         int temp_1 = length − i;
         int temp_2 = vec[i − 1] − i;
         vec.push_back(temp_1 + temp_2);
      }
   }
   for (int i = 0; i < length; i++){
      if(str[i] == 'a' || str[i] == 'i' || str[i] == 'e' || str[i] == 'o' || str[i] == 'u'){
         count = count + vec[i];
      }
   }
   return count;
}
int main(){
   string str = "honesty";
   int length = str.length();
   cout<<"Count the number of vowels occurring in all the substrings of given string are: "<<substring_vowels_count(str, length);
   return 0;
}

出力

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

Count the number of vowels occurring in all the substrings of given string are: 28

  1. C++を使用して文字列の部分文字列の数を見つける

    この記事では、特定の文字列に形成できるサブ文字列(空ではない)の数を見つけるためのアプローチについて学習します。 Input : string = “moon” Output : 10 Explanation: Substrings are ‘m’, ‘o’, ‘o’, ‘n’, ‘mo’, ‘oo’, ‘on’, ‘moo’, ‘oon’ and &

  2. 指定された文字列のセットを使用して母音の数をカウントするPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −文字列が与えられたので、与えられた文字列のセットを使用して母音の数を数える必要があります。 ここでは、文字列全体をトラバースして、各文字が母音であるかどうかを確認し、カウントをインクリメントします。 次に、以下の実装の概念を観察しましょう- 例 def vowel_count(str):    count = 0    #string of vowels    vowel = "aeiouAEIOU"   &nbs