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

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

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

//加载一个比较器 使其按照短串子串长度及先后排序

import java.util.Scanner;
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String a = input.nextLine();
        String b = input.nextLine();
        String c = a.length() >= b.length() ? b : a;//短串
        String d = a.length() >= b.length() ? a : b;//长串
        ArrayList<String> arrayList = sort(c);
        Collections.sort(arrayList, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                if (o1.length() > o2.length()) {
                    return -1;
                } else if((o1.length() < o2.length())){
                    return 1;
                }else{//长度相同 排序不变
                    return 0;
                }

            }
        });
    }

    public static ArrayList<String> sort(String s1) {
        ArrayList<String> arrayList = new ArrayList<>();
        for (int i = 0; i < s1.length(); i++) {
            for (int j = i + 1; j <= s1.length(); j++) {
                String value = s1.substring(i, j);
                if (!arrayList.contains(value)) {
                    arrayList.add(value);

                }
            }
        }
        return arrayList;


    }
}

全部评论

相关推荐

10-16 19:16
Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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