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

C++で文字列の1つのトラバーサルを使用する最初の非反復文字


このチュートリアルでは、指定された文字列の最初の繰り返しのない文字を見つける方法を学習します。例を見てみましょう。

入力 −tutorialspoint

出力 −u

問題を解決するための手順を見てみましょう。

  • 文字列を初期化します。

  • マップ文字と配列を初期化して、文字列内の文字の頻度を格納します。

  • 文字列を繰り返し処理します。

  • 各キャラクターの頻度を見つけて、マップに保存します。

  • キャラクターのインデックスも保存します。

  • マップ内の文字の頻度を繰り返します。

  • 頻度1で最初の文字を印刷します。

コードを見てみましょう。

#include <bits/stdc++.h>
#include <map>
using namespace std;
void findDistinctCharacters(string random_string) {
   // initializing char count
   map<char, int[2]> chars;
   // iterating over the string
   for (int i = 0; i < random_string.size(); ++i){
      chars[random_string[i]][0]++;
      chars[random_string[i]][1] = i;
   }
   int char_index = INT_MAX;
   // printing the first char with frequency 1
   for (auto item: chars) {
      // checking the frequency
      if (item.second[0] == 1) {
         char_index = min(char_index, item.second[1]);
      }
   }
   // printing the first char with frequency 1
   cout << random_string[char_index] << u;
}
int main() {
   findDistinctCharacters("tutorialspoint");
   return 0;
}

出力

上記のコードを実行すると、次の結果が得られます。

u

結論

チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。


  1. 文字列内の文字の頻度を見つけるC++プログラム

    文字列は、ヌル文字で終了する1次元の文字配列です。文字列内の文字の頻度は、文字列内で出現する回数です。例- String: Football is a sport The frequency of alphabet o in the above string is 3 特定のアルファベットの頻度を見つけるプログラムは次のとおりです。 例 #include <iostream> using namespace std; int main() {    char str[100] = "this string contains many alphabet

  2. Pythonの文字列の最初の一意の文字

    文字列があり、文字列内の最初の一意の文字を検索する必要があるとします。したがって、文字列が「人」のようなものである場合、出現する最初の文字は「o」です。したがって、インデックスが返されます。ここでは2です。そのような文字がない場合は、-1を返します。 これを解決するには、次の手順に従います- 1つの頻度マップを作成する 文字列内の文字cごとに、を実行します。 cが頻度にない場合は、それを頻度に挿入し、値1を入力します それ以外の場合は、頻度のカウントを増やします 頻度マップをスキャンします。特定のキーの値が1の場合はそのキーを返し、そうでない場合は-1を返します。 例 理解を深め