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