題目敘述
給定乙個字串str,求其最長重複真子串s。
注意:s的串長length小於str的串長length。
輸入格式:
輸入乙個字串str,以換行符結束。
輸出格式:
輸出二行:
第一行:原字串 str
第二行:最長重複子串s,以換行符結束。
輸入樣例:
abcabcaeabcae
輸出樣例:
abcabcaeabcae
abcae
注意:無論是找到與否,輸出的第一行都需要輸出一遍原字串(具體看題要求)
核心:利用字首陣列的特性,即最大的 next[i] 對應最大的串長。 需要注意的是,下面的**中針對部分情況的結果是通過取巧的方式得到的。
#include
using namespace std;
char ch[
1000000
],s[
1000000];
void
get_next
(char
* t ,
int* next)
}int
main()
} cout
for(
int i=maxi-max+1;
(i<=maxi||next[i]==0
); i++
)printf
("%c"
,ch[i]);
else
cout<<
"null"
;return0;
}
求最長重複子串
主要思路還是求出所有的字尾陣列,對字尾陣列進行排序,這樣所有最接近的字串一定就在相鄰了,只需要比較每個字尾陣列的前後兩個串,就可以求出所有重複的字串,然後比較就可以得到最大的重複串的長度。include include include include include using namespace ...
求最長重複子串 和 最長不重複子串 思路
題目 求任意乙個字串中的所有最長重複字串和所有最長不重複子串 最長不重複子串的解法 設定乙個輔助資料結構 如map 記錄每個字元最後一次出現的位置 遍歷字串中的每個字元,如果在map中沒有出現,則不重複子串的長度 1,並更新最大字串的長度值 如果在map中已經出現過,則更新當前字元在map中的位置和...
leetcode 求最長無重複子串
1.求最長無重複子串 給定乙個字串,找出不含有重複字元的最長子串的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是 子串行 而...