1062 最長重複子串

2021-10-24 19:34:07 字數 914 閱讀 6783

題目描述:

給定字串 s,找出最長重複子串的長度。如果不存在重複子串就返回 0。

示例 1:

輸入:「abcd」

輸出:0

解釋:沒有重複子串。

示例 2:

輸入:「abbaba」

輸出:2

解釋:最長的重複子串為 「ab」 和 「ba」,每個出現 2 次。

示例 3:

輸入:「aabcaabdaab」

輸出:3

解釋:最長的重複子串為 「aab」,出現 3 次。

示例 4:

輸入:「aaaaa」

輸出:4

解釋:最長的重複子串為 「aaaa」,出現 2 次。

字串 s 僅包含從 『a』 到 『z』 的小寫英文本母。

1 <= s.length <= 1500

方法1:

主要思路:

(1)二分查詢;

(2)從最小長度到最大長度的區間範圍內,進行二分搜尋,找出可能的更大的長度的重複字串是否存在,若存在,則記錄該長度;

(3)逐漸減小範圍;

class

solution

st.insert

(tmp)

;//將當前字串插入unordered_set中

}return

false;}

intlongestrepeatingsubstring

(string s)

else

}return max_len;

//返回長度}}

;

最長重複子串

首先這是乙個單字串問題。子字串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 比較 相鄰字串,找出兩個子串中,相同的字元的個數。注意,對於乙個子串,乙個與其重複最多的字串肯定是...

求最長重複子串 和 最長不重複子串 思路

題目 求任意乙個字串中的所有最長重複字串和所有最長不重複子串 最長不重複子串的解法 設定乙個輔助資料結構 如map 記錄每個字元最後一次出現的位置 遍歷字串中的每個字元,如果在map中沒有出現,則不重複子串的長度 1,並更新最大字串的長度值 如果在map中已經出現過,則更新當前字元在map中的位置和...