Scanner in = new Scanner(System.in);
String ss1 = in.nextLine();
String ss2 = in.nextLine();
String s1 = ss1.length() < ss2.length() ? ss1 : ss2; // 短的字符串
String s2 = ss1.length() < ss2.length() ? ss2 : ss1; // 长的字符串
int n = 0;
for (int i = 0; i < s1.length(); i++) { // 头指针从第一位开始递增
for (int j = s1.length(); j > i; j--) { // 尾指针从最后一位开始缩减
System.out.println("对比的字符串:" + s1.substring(i, j) + ",当前i=" + i + ",j=" + j + ",n=" + n);
System.out.println("-----------------------------");
if (s2.contains(s1.substring(i, j))) { // 第一次发现合集的长度一定是最大的
n = j - i > n ? j - i : n; // 取每一次比较的最大值
System.out.println("当前匹配上的子串为:" + s1.substring(i, j) + ",当前i=" + i + ",j=" + j + ",n=" + n);
continue; // 已经是最大的,无需再进行后续的操作
}
}
}
System.out.println("最长子串长度为:" + n);
最大公共子串
最新推荐文章于 2023-10-19 21:19:17 发布