LeetCode 最長重複子串?

2022-06-24 09:12:12 字數 1187 閱讀 6491

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 是 子串行 而...