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