C++の辞書式順序の最後の部分文字列
文字列としてsがあるとすると、辞書式順序でsの最後の部分文字列を見つける必要があります。
したがって、入力が「abbbcabbc」のような場合、出力は「cabbc」になります
これを解決するには、次の手順に従います-
-
i:=0、j:=1、k:=0
-
j + k
を実行します。-
s [i+k]がs[j+ k]と同じ場合、-
-
(kを1増やします)
-
次の部分を無視し、次の反復にスキップします
-
-
s [i + k]
-
i:=j
-
(jを1増やします)
-
-
それ以外の場合
-
j:=j + k + 1
-
-
k:=0
-
インデックスiから終了までのsの部分文字列を返します
理解を深めるために、次の実装を見てみましょう-
例
#include <bits/stdc++.h> using namespace std; class Solution { public: string lastSubstring(string s) { int i = 0; int j = 1; int k = 0; while(j + k < s.size()){ if(s[i + k] == s[j + k]) { k++; continue; } if(s[i + k] < s[j + k]){ i = j; j++; }else{ j = j + k + 1; } k = 0; } return s.substr(i, s.size() - i); } }; main(){ Solution ob; cout << (ob.lastSubstring("abbbcabbc")); }
入力
"abbbcabbc"
出力
cabbc
-
C++の部分文字列
部分文字列は文字列の一部です。 C ++で部分文字列を取得する関数はsubstr()です。この関数には、posとlenの2つのパラメーターが含まれています。 posパラメータは部分文字列の開始位置を指定し、lenは部分文字列の文字数を示します。 C++で部分文字列を取得するプログラムは次のとおりです- 例 #include <iostream> #include <string.h> using namespace std; int main() { string str1 = "Apples are red"; &nb
-
辞書式順序(辞書順)で要素をソートするC++プログラム
辞書式順序は、アルファベット順のアルファベット順に基づいて、単語がリスト内で順序付けられる方法を示します。例- List of words: Harry Adam Sam Lexicographical order of words: Adam Harry Sam 辞書式順序で要素をソートするプログラムは次のとおりです- 例 #include <iostream> using namespace std; int main() { int i,j; string s[5], temp; cout<