【题目笔记】获取两个字符串中最大相同子串

1,972 阅读1分钟

一、题目

获取两个字符串中最大相同子串。比如:str1 = "abcwerthelloyuiodef“; str2 = "cvhellobnm", 要求只使用String相关方法解题

二、解

以下提供一种解题方法,严格解题需要判断题中两个字符串的大小,用小的选取子串str3与长度大的进行比较,还要判断两个字符串是否为空,这里只写出算法部分,该方法有局限性,只能找出第一个符合的,如果有多个符合的需要用集合或其他方法来做

public class Exer {
    public static void main(String[] args) {
        String str1 = "abcwerthelloyuiodef";
        String str2 = "cvhellobnm";
        int k = -1;     //获取子字符串出现的位置

        for (int flag = str2.length();flag > 1; flag-- )    //flag代表选取str3的长度
        {
            for (int i = 0; i < str2.length()- flag +1; i++) {  //i代表选取str3的开始位置
               String str3 = str2.substring(i, i+ flag);
               k = str1.indexOf(str3);
               if(k> 0){
                   System.out.println("最大相同子串为:"+str3);
                   return;
               }
            }
        }

        if(k == -1){
            System.out.println("没有匹配到相同字符串");
        }
    }
}