题解 | #查找两个字符串a,b中的最长公共子串#

查找两个字符串a,b中的最长公共子串

http://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506

挑战全网代码量最大,不服来战!!!!

import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext()){
            String str = scan.nextLine();
            String str1 = scan.nextLine();
//             StringBuilder strb = new StringBuilder();
            List<String> list = new ArrayList<>();
            for(int i = 0; i<str1.length(); i++){
                for(int j = i+1; j<=str1.length(); j++){
                    if(str.contains(str1.substring(i,j))){
//                         strb.append(str1.substring(i,j));
                        list.add(str1.substring(i,j));
                    }
                }
            }
//             System.out.println(list.get(20));
//             String[] strs = new String[strb.length()];
            String[] strs = new String[list.size()];
            for(int i = 0; i<list.size(); i++){
                strs[i] = list.get(i);
            }
            int max = 0;
            for(String s : strs){
                max = Math.max(max, s.length());
            }
            String[] res = new String[100];
            int k = 0;
            for(String s : strs){
                if(s.length() == max){
                    res[k] = s;
                    k++;
                }
            }
           int count = 0;
//             System.out.println(res[0]);
            if(str.length()< str1.length()){
                for(int i = max; i<=str.length(); i++){
                    for(int j = 0; j<k; j++){
                        if(str.substring(0,i).contains(res[j])){
                            System.out.println(res[j]);
                            count++;
                            break;
                        }
                    }
                    if(count == 1){
                        break;
                    }
                }      
            }
            else{
                for(int i = max; i<=str1.length(); i++){
                    for(int j = 0; j<k; j++){
                        if(str1.substring(0,i).contains(res[j])){
                            System.out.println(res[j]);
                            count++;
                            break;
                        }
                    }
                    if(count == 1){
                        break;
                    }
                }
            }

            
//             Arrays.sort(strb.toString().toCharArray());

            
            
        }
        scan.close();
    }
}






全部评论

相关推荐

07-04 16:00
门头沟学院 Java
点赞 评论 收藏
分享
程序员小白条:你不是有一段实习了吗,现在找中大厂实习?过段时间要秋招了
我的简历长这样
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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