求两个字符串的最大公共子字符串

120 阅读1分钟

参考# 从两个字符串中找出最大公共子字符串,更新了有多个最大公共子字符串的情况

//https://www.cnblogs.com/lijiaman/p/5903722.html
	public static void commonString(String str_1, String str_2) {
        String comString = ""; // 用于存放公共字符串
        String childString = ""; // 存放拆分得到的子字符串
        String minString = str_1.length() < str_2.length() ? str_1 : str_2; // 选取短的字符串做拆分
        // System.out.println(minString);
        List<String> stringList = new ArrayList<>();
        int maxLength = 0;
        for (int i = 1; i <= minString.length(); i++) {
            for (int j = 0; j < minString.length(); j++) {
                if (j + i <= minString.length()) {
                    childString = minString.substring(j, j + i);
                    
                    if (str_2.indexOf(childString) != -1) { // 如果不等于-1,则表示在str_2里面找到childString
                    	System.out.println(str_2+" "+childString+"  "+str_2.indexOf(childString));
                        comString = childString;
                        if (comString.length() > maxLength) {
                        	maxLength = comString.length();
                            stringList.clear();
                            stringList.add(childString);
                        } else if (comString.length() == maxLength) {
                            stringList.add(childString);
                        }
                    }
                }
            }
        }
        for(String a:stringList){
        	System.out.println(a);
        }
    }

参考# 从两个字符串中找出最大公共子字符串