[Swift-2019力扣杯春季決賽]3. 最長重復子串
阿新 • • 發佈:2019-04-21
字母 func ans 字符串 bin rom span run 出現
給定字符串 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
920 ms
1 class Solution { 2 var lcp:[[Int]] = [[Int]](repeating:[Int](repeating:0,count:1505),count:1505) 3 func longestRepeatingSubstring(_ S: String) -> Int { 4 var n:Int = S.count 5 var ans:Int = 0 6 var arrS:[Character] = Array(S) 7 for i instride(from:n - 1,through:0,by:-1) 8 { 9 for j in (i + 1)..<n 10 { 11 if arrS[i] == arrS[j] 12 { 13 lcp[i][j] = lcp[i + 1][j + 1] + 1 14 } 15 else 16 { 17lcp[i][j] = 0 18 } 19 ans=max(ans,lcp[i][j]) 20 } 21 } 22 return ans 23 } 24 }
[Swift-2019力扣杯春季決賽]3. 最長重復子串