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

C++で同じネイバーを持つ文字をカウントします


たとえば、strを含む文字列が与えられます。タスクは、同じ隣接文字を持つ文字列str内の文字数を計算することであり、文字列内の文字の左側と右側の両方が含まれます。また、このシナリオでは、文字列の最初と最後の文字は、隣接する文字が1つしかないため、常に考慮されます。

Input − string str = “poiot”
Output − count is 3

説明 −指定された文字列文字p、t、およびiは同じネイバーを持っているため、カウントは3に増加します。

Input − string str = “nitihig”
Output − count is 4

説明 −指定された文字列文字n、t、h、およびgは同じ隣接文字を持っているため、カウントは4に増加します。

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

  • 文字列を変数に入力します。たとえば、str

  • スペースを含む文字列内の文字数に応じて整数値を返すlength()関数を使用して、文字列strの長さを計算します。

  • 文字列の長さが2以下の場合は、すべてがカウントされるため、カウントを文字列の長さとして返します。

  • 文字列の長さが2より大きい場合は、カウントを2で初期化します。

  • ここで、iが(長さ-1)未満になるまでiから1でループを開始します

  • ループ内で、(str [i-1] =str [i + 1])かどうかを確認してから、カウントを1増やします

  • ここで、カウントの合計値を返します

  • 結果を印刷します。

#include <iostream>
using namespace std;
// To count the characters
int countChar(string st){
   int size = st.length();
   if (size <= 2){
      return size;
   }
   int result = 2;
   // Traverse the string
   for (int i = 1; i < size - 1; i++){
      // Increment the count by 1 if the previous
      // and next character is same
      if (st[i - 1] == st[i + 1]){
         result++;
      }
   }
   // Return result
   return result;
}
int main(){
   string st = "poiot";
   cout <<"count is " <<countChar(st);
   return 0;
}

出力

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

count is 3

  1. C++で文字の繰り返しを含むすべての順列を出力します

    この問題では、n文字の文字列が与えられ、文字列の文字のすべての順列を出力する必要があります。文字列の文字の繰り返しは許可されています。順列の印刷は、アルファベット順(辞書式順序)で実行する必要があります。 トピックをよりよく理解するために例を見てみましょう: 入力- XY 出力- XX、XY、YX、YY この問題を解決するには、修正と繰り返しのロジックを使用する必要があります。ここでは、配列の最初のインデックスで1つの要素を修正してから、シーケンス内の次の要素を再帰的に呼び出します。 ソリューションを明確にする実装例を見てみましょう。 文字列XYを入力します。 1つのインデック

  2. C ++のgetline(文字列)

    これは、フォーマットされていない入力としてストリームから文字を抽出し、抽出された文字が区切り文字になるか、n文字がsに書き込まれる(終了ヌル文字を含む)まで、c文字列としてsに格納するために使用されます。宣言は次のようなものです: basic_istream& getline (char_type* s, streamsize n ); basic_istream& getline (char_type* s, streamsize n, char_type delim); パラメータは、文字の配列への「s」ポインタであり、抽出された文字はc_stringとして格納されます。