原题在:https://leetcode-cn.com/contest/college/2019-spring/problems/longest-repeating-substring/
参考https://blog.csdn.net/u012114090/article/details/81669021
可使用后缀数组,问题转化为求后缀数组的最长前缀,通过的代码为:
import java.util.*;
//后缀数组
class Solution32 {
public int longestRepeatingSubstring(String S) {
String[] suffixs= new String[S.length()];
for(int i=0;i<S.length();++i){
suffixs[i]=S.substring(i);
}
Arrays.sort(suffixs); //parrelsort
// Arrays.parallelSort(suffixs); //parrelsort
int maxlen = 0;
for(int i=0;i<S.length()-1;++i){
int len = 0;
int big = Math.min(suffixs[i].length(), suffixs[i+1].length());
for(int j=0;j<big;++j) {
if(suffixs[i].charAt(j)==suffixs[i+1].charAt(j))
++len;
else
break;
}
maxlen = Math.max(maxlen, len);
}
return maxlen<2? 0: maxlen;
}
}