玖叶教程网

前端编程开发入门

经典笔试题:求两个字符串中交集字串的最大长度

这是一道字符串拆解的问题,抓住一个核心是交集字串的最大的长度,所以算法实现的时候要从最长字串来截取。

核心思路:

1、判断两个字符串的长度,确定拆解短的那个字符串。

2、截取子符串的 步长从拆解串的最大长度开始,依次减1

3、循环获取子串,同时判断长字符串是否包含子串,由于我们是以最大步长开始截取,所以第一遇到满足条件的子串就是我们需要的结果

具体java代码实现如下:

public class SameSubStr {


    public static void main(String[] args) {
        String sameSubStr = getSameSubStr("abcdsadwwwwwffff", "cdwww");
        System.out.println("sameSubStr====="+sameSubStr);
    }

    public  static  String getSameSubStr(String a,String b){

        String result = null;
        String splitStr = null;
        String longStr = null;
        if(a.length()<=b.length()){
            splitStr = a;
            longStr = b;
        }else{
            splitStr = b;
            longStr = a;
        }


        int len = splitStr.length();

        for (int l=len+1;l>0;l--){
            int start =0;
            int end = l;
            while (end<=len){
                String subStr = splitStr.substring(start,end);
                start++;
                end=start+l;
                System.out.println(subStr+"-->"+longStr.contains(subStr));

                if (longStr.contains(subStr)){
                   return subStr;
                }
            }
        }

        return result;
    }
}

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言