题解 | #查找两个字符串a,b中的最长公共子串#
查找两个字符串a,b中的最长公共子串
https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader in = new BufferedReader(new InputStreamReader (System.in));
String str1, str2;
while((str1 = in.readLine()) != null && (str2 = in.readLine()) != null) {
//确保str1最短
if(str1.length() > str2.length()){
String tem = str1;
str1 = str2;
str2 = tem;
}
//初始化操作
char[] ch1 = str1.toCharArray();
char[] ch2 = str2.toCharArray();
int maxLen = 0;
String res = "";
//双重循环找最长
for(int i = 0; i < ch1.length; ++i) {
for(int j = 0; j < ch2.length; ++j) {
int maxTem = 0;
int t1 = i;
int t2 = j;
while(ch1[t1] == ch2[t2]) {
++t1;
++t2;
++maxTem;
if(t1 == ch1.length || t2 == ch2.length) break;
}
if(maxTem > maxLen) {//只有当前字串比原来字串长,才将字串记录于其中
maxLen = maxTem;
res = str1.substring(i, t1);
}
}
}
System.out.println(res);
}
}
}