import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextLine()) { // 注意 while 处理多个 case String s = in.nextLine(); longestRepeatSubStr(s); } } private static void longestRepeatSubStr(String s) { int maxLen = 0; for (int i = 0; i < s.length() - 1; i++) { for (int j = i + 1; j < s.length(); j++) { int len = 0; // 重复字符串的第一个串的起始下标; int fi = i; // 重复字符串的第二个串的起始下标 int si = j; // 其实就是枚举,如果是重复字符串,那么起始位置后边的几个都是一样的。 // 从每个位置开始往后找。找到相同的,则循环去比较数据 while (fi < s.length() && si < s.length() && s.charAt(fi) == s.charAt(si)) { fi++; si++; len++; } maxLen = Math.max(len, maxLen); } } System.out.println(maxLen); } }