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

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

  1. 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

  2. 辞書式順序(辞書順)で要素をソートする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<