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

C++で文字列の最後の非繰り返し文字を検索します


文字列strがあるとします。その中の最後の非反復文字を見つける必要があります。したがって、入力文字列が「プログラミング」のようなものである場合。したがって、最初の繰り返しのない文字は「n」です。そのような文字が存在しない場合は、-1を返します。

これは、1つの周波数配列を作成することで解決できます。これにより、指定された文字列の各文字の頻度が保存されます。頻度が更新されたら、最後の文字から1つずつ文字列のトラバースを開始します。次に、保存されている頻度が1であるかどうかを確認し、1の場合は戻り、そうでない場合は前の文字に進みます。

#include <iostream>
using namespace std;
const int MAX = 256;
static string searchNonrepeatChar(string str) {
   int freq[MAX] = {0};
   int n = str.length();
   for (int i = 0; i < n; i++)
      freq[str.at(i)]++;
   for (int i = n - 1; i >= 0; i--) {
      char ch = str.at(i);
      if (freq[ch] == 1) {
         string res;
         res+=ch;
         return res;
      }
   }
   return "-1";
}
int main() {
   string str = "programming";
   cout<< "Last non-repeating character: " << searchNonrepeatChar(str);
}

出力

Last non-repeating character: n

  1. C++でソートされた順序でn番目のバイナリ文字列を検索します

    この問題では、正の数1が与えられます。私たちのタスクは、ソートされた順序でN番目の2進文字列を見つけることです。 辞書式順序で並べ替えられた2つの記号aとbのみを使用して作成された文字列の無限のリストからN番目の文字列を見つける必要があります。 リストは-です a、b、aa、ab、ba、bb、aaa、aab、aba、… 問題を理解するために例を見てみましょう Input : N = 8 Output : aab ソリューションアプローチ この問題の簡単な解決策は、ループを使用してn個の文字列すべてを生成することです。そして、N番目の文字列を返します。このソリューションは機能しま

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

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