Java机试题:计算两个字符串的公共最大子串

import java.util.*;

public class Main {
    public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       String str1 = sc.nextLine();
       String str2 = sc.nextLine();
       // 最大公共子串,超不过两个字符串中最小的那个字符串长度
       String min = str1;
       String max = str2;
       if(str1.length() > str2.length()){
           max = str1;
           min = str2;
       }
       // 找出小字符串中,所有的子串
       List<String> minList = new ArrayList<String>();
        for (int i = 0; i < min.length(); i++) {
            for (int j = i+1; j <= min.length(); j++) {
                minList.add(min.substring(i, j));
            }
        }
        // 在大字符串中找到匹配小字符串所有子串中,最大的长度
        int maxLen = 0;
        for (int i = 0; i < minList.size(); i++) {
            if(max.indexOf(minList.get(i)) > -1){
                if(minList.get(i).length() > maxLen){
                    maxLen = minList.get(i).length();
                }
            }
        }
        System.out.println(maxLen);
    }
}

 题目来源:牛客网

posted @ 2021-12-30 10:35  对月当歌  阅读(129)  评论(0)    收藏  举报