题解 | #查找两个字符串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();
    }
}






全部评论

相关推荐

面试摇了我吧:啊哈哈面试提前五个小时发,点击不能参加就是放弃
点赞 评论 收藏
分享
废铁汽车人:秋招真是牛鬼蛇神齐聚一堂
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务