题解 | #查找两个字符串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;
}
}
查看2道真题和解析