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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP