应该先遍历小的字符串

查找两个字符串a,b中的最长公共子串

https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String string1 = in.next();
        String string2 = in.next();
        String temp = "";
        // 确保string2为最长串
        if (string1.length() > string2.length()) {
            temp = string2;
            string2 = string1;
            string1 = temp;
        }
        char[] charArray1 = string1.toCharArray();
        char[] charArray2 = string2.toCharArray();

        String maxStr = "";
        int maxCount = 0;

        for (int i = 0; i < charArray1.length; i++) {
            for (int k = 0; k < charArray2.length; k++) {
                char c1 = charArray1[i];
                char c2 = charArray2[k];

                int count = 0;
                String str = "";
                if (c2 == c1) {
                    StringBuilder builder = new StringBuilder();
                    builder.append(c1);
                    count = 1;
                    // 同步开始
                    int index1 = i;
                    int index2 = k;
                    while (true) {
                        // 有一个达到尾部则结束下一个字符串比较
                        if (index1 == charArray1.length - 1 || index2 == charArray2.length - 1) {
                            break;
                        }
                        char c = string2.charAt(++index2);
                        // 下一个字符还是相等
                        if (c == string1.charAt(++index1)) {
                            builder.append(c);
                            count++;
                        } else {
                            // 两个字符串的下一个字符不相等,则结束
                            break;
                        }
                    }
                    str = builder.toString();
                }
                if (count > maxCount) {
                    maxCount = count;
                    maxStr = str;
                }

            }
        }
        System.out.println(maxStr);
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务