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
广告