q:給出乙個字串 s,考慮其所有重複子串(s 的連續子串,出現兩次或多次,可能會有重疊)。返回任何具有最長可能長度的重複子串。(如果 s 不含重複子串,那麼答案為 ""。)
示例 1:
輸入:"banana"
輸出:"ana"
示例 2:
輸入:"abcd"
輸出:""
a:1.字串編碼法:具體可以去看rabin-karp 字串編碼
}但……超出時間限制了。
2.二分查詢+字串編碼法
public string longestdupsubstring(string s)
int low = 1;
int high = len;
while(low != high)
int start = search(low-1, a, module, nums);
if(start == -1)
return "";
else
return s.substring(start, start+low-1);
}// 返回重複字串的起始位置
// 引數:l-重複字串的長度,a-進製,module-取模數,nums-字串的編碼陣列
public int search(int l, int a, long module, int nums)
hashset.add(tmp);
for(int j = 1; j <= len - l; j++)
return -1;
}
3.還有字尾樹法,等有時間 最長重複子串
首先這是乙個單字串問題。子字串r 在字串l 中至少出現兩次,則稱r 是l 的重複子串。重複子串又分為可重疊重複子串和不可重疊重複子串。方法 kmp演算法求解 在kmp演算法的關鍵就是求解next陣列,針對next j k,可以得到p 0,1,k 1 p j k,j k 1,j 1 看到p 0,1,k...
最長重複子串
思路 使用字尾陣列解決 分析 1 由於要求最長公共子串行,則需要找到字串的所有子串,即通過產生字串的字尾陣列實現。2 由於要求最長的重複子串,則需要對所有子串進行排序,這樣可以把相同的字串排在一起。3 比較 相鄰字串,找出兩個子串中,相同的字元的個數。注意,對於乙個子串,乙個與其重複最多的字串肯定是...
leetcode 求最長無重複子串
1.求最長無重複子串 給定乙個字串,找出不含有重複字元的最長子串的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是 子串行 而...