C ++中按字典顺序的最后一个子字符串

假设我们以s作为字符串,我们必须按字典顺序查找s的最后一个子字符串。

因此,如果输入像“ abbbcabbc”,那么输出将是“ cabbc”

为了解决这个问题,我们将遵循以下步骤-

  • i:= 0,j:= 1,k:= 0

  • 而j + k <s的大小,做&minsu;

    • j:= j + k + 1

    • i:= j

    • (将j增加1)

    • (将k增加1)

    • 忽略以下部分,跳至下一个迭代

    • 如果s [i + k]与s [j + k]相同,则-

    • 如果s [i + k] <s [j + k],则-

    • 除此以外

    • 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 ++中按字典顺序的最后一个子字符串 的全部内容, 来源链接: utcz.com/z/322235.html

    回到顶部