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