暴力解法,遍历,找相同
采用二分查找,查找的是相同的长度
public class test {
public boolean isRepeat(String s, int len){
for(int i=0; i<s.length()-len; i++){
for(int j=i+1; j<s.length()-len; j++){
if(s.substring(i,i+len).equals(s.substring(j, j+len))){
return true;
}
}
}
return false;
}
public int longestRepeatingSubstring(String s){
int left = 0;
int right = s.length()-1;
int max = 0;
while (left <= right){
int mid = left + (right - left)/2;
boolean flag = isRepeat(s, mid);
if(flag){
max = mid;
left = mid + 1;
}else{
right = mid - 1;
}
}
return max;
}
}