最长的重复子串的长度;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Scanner;
public class zuichang_chongfuzichuan {
private static String result="";
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
ArrayList<String> list=new ArrayList<>();
for(int i=s.length()-1;i>=0;i--){
list.add(s.substring(i));
}
//将列表输出
//将所有的后缀子串输出,然后将其进行自然排序
Collections.sort(list);
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
int maxLen=Integer.MIN_VALUE;
// System.out.println(s.substring(2));
//比较排序后的相邻的后缀的最长公共子串,两个后缀从第一个字符开始的就相等得到公共子串,求得最长得公共子串
for(int i=0;i<s.length()-1;i++){
int len=getComlen(list.get(i),list.get(i+1));
maxLen=Math.max(len,maxLen);
}
System.out.println(maxLen);
}
//得到两个字符串得最长公共长度
public static int getComlen(String str1,String str2){
int i;
for(i=0;i<str1.length()&&i<str2.length();i++){
if(str1.charAt(i)!=str2.charAt(i)){
break;
}
}
String substring=str1.substring(0,i);
if(substring.length()> result.length()) result=substring;
return i;
}
}