【笔试题分析】求两个字符串中最大公共子串的字符数

题目:求两个字符串中最大公共子串的字符数,以下是一种解法,代码如下:

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);
    }
}

欢迎讨论,娱乐娱乐生活。

原创文章 34 获赞 20 访问量 1138

猜你喜欢

转载自blog.csdn.net/qq_22744093/article/details/104721383