C++ 中词汇顺序中的最后一个子字符串


假设我们有字符串 s,我们需要找到 s 中词汇顺序中的最后一个子字符串。

因此,如果输入类似于 “abbbcabbc”,则输出将是 “cabbc”

为了解决这个问题,我们将按照以下步骤操作 −

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

  • while j + k < s 的大小,执行 &minsu;

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

      • (将 k 增加 1)

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

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

      • i := j

      • (将 j 增加 1)

    • 否则

      • j := j + k + 1

    • k := 0

返回从索引 i 到末尾的子字符串

让我们看看以下实现以获得更好的理解 −

示例

 在线演示

#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

更新于: 2020 年 6 月 4 日

245 浏览量

启动你的 职业生涯

完成课程,获得认证

开始
广告