给定字符串 S,找出最长重复子串的长度。如果不存在重复子串就返回 0。
示例 1:
输入:"abcd"
输出:0
解释:没有重复子串。
class Solution {
public int longestRepeatingSubstring(String S) {
// dp[i][j] 表示以分别以i,j结尾的元素的重复字串长度.
// res = max{dp};
// dp[i][j] = dp[i-1][j+1] + 1 when s(i)==s(j);
int m = S.length();
int[][] dp = new int[m+1][m+1];
int res = 0;
for(int i=0;i<m;i++){
for(int j=i+1;j<m;j++){
if(S.charAt(i)==S.charAt(j)){
dp[i+1][j+1] = dp[i][j]+1;
res = Math.max(res,dp[i+1][j+1]);
}
}
}
return res;
}
}