递归算最长公共子串,简单暴力,代码少!

公共子串计算

http://www.nowcoder.com/questionTerminal/98dc82c094e043ccb7e0570e5342dd1b

import java.util.*;

public class 公共子串计算 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while (sc.hasNext()){
            String str1=sc.nextLine();
            String str2=sc.nextLine();
            char[] c1= str1.toCharArray();
            char[] c2=str2.toCharArray();
            List<Integer> list=new ArrayList<>();

            for (int i=0;i<c1.length;i++){ //扫描每个字符,若能匹配上,就开始递归算重合部分的序列长度
                for (int j=0;j<c2.length;j++){
                    if (c2[j]==c1[i]){//经过扫描,每次第一个字母对上就开始递归
                        list.add(howmanybit(c1,c2,i,j));//往集合里添加重合字符串的长度
                    }
                }
            }
            //Collections.sort(list);//排序,找到最大的数就是最长的公共子串
            Collections.sort(list, new Comparator<Integer>() {
                @Override
                public int compare(Integer o1, Integer o2) {
                    return o2-o1;
                }
            });
            System.out.println(list.get(0));
            list.clear();
        }
    }

    public static  int howmanybit(char[] c1,char[] c2,int i,int j){
        if(i>=c1.length||j>=c2.length||c1[i]!=c2[j]){
            return 0;
        }
        else {
            return 1 + howmanybit(c1, c2, i + 1, j + 1);
        }
    }
}
全部评论

相关推荐

11-11 16:40
已编辑
门头沟学院 人工智能
不知道怎么取名字_:这个有点不合理了,相当于已经毕业了,但还是没转正,这不就是白嫖
点赞 评论 收藏
分享
不知道怎么取名字_:两个方向 1.简历针对性准备下 2.面试前也需要准备的 主要还是要看各个公司需求,看公司行业和岗位描述,那里面已经写了对技术的需求,一份简历,不可能和所有嵌入式岗位都匹配的
投递北京经纬恒润科技股份有限公司等公司6个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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