题目:求两个字符串中最大公共子串的字符数,以下是一种解法,代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String string1 = scanner.nextLine();
String string2 = scanner.nextLine();
char[] chars1 = string1.toCharArray();
char[] chars2 = string2.toCharArray();
int max = 0;
int num = 0;
/**
* 以字符串chars2为尺,以chars1为游标,进行字符匹配,
* 若字符串chars1的字符在chars2中匹配到一个字符,就进行第二个字符的匹配,
* 若不符合则记录该次的匹配到的字符数。并以该次的匹配数目和以前的比较,如果比之前的大,则
* 更新最大匹配数。
*/
for (int i = 0; i < chars1.length; i++) {
for (int j = 0; j < chars2.length; j++) {
//匹配到一个字符
if (chars1[i] == chars2[j]) {
num = 1;
//k <= chars1.length注意点,string1.substring(i, k)是截取包前不包后,需要等于chars1.length,才可以截取最后的字符
for (int k = i + 2; k <= chars1.length; k++) {
//以匹配到的字符为起点进行一个一个字符追加匹配
if (string2.indexOf(string1.substring(i, k)) != -1) {
num++;
} else {
break;
}
}
}
//判断该次匹配数和之前的比较
if (num > max) {
max = num;
}
num = 0;
}
}
System.out.println(max);
}
}
欢迎讨论,娱乐娱乐生活。