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
-
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番目の文字列を返します。このソリューションは機能しま
-
C++を使用して文字列の部分文字列の数を見つける
この記事では、特定の文字列に形成できるサブ文字列(空ではない)の数を見つけるためのアプローチについて学習します。 Input : string = “moon” Output : 10 Explanation: Substrings are ‘m’, ‘o’, ‘o’, ‘n’, ‘mo’, ‘oo’, ‘on’, ‘moo’, ‘oon’ and &