题解 | #查找两个字符串a,b中的最长公共子串#
查找两个字符串a,b中的最长公共子串
http://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String str1 = in.next();
String str2 = in.next();
int lengthmax = 0;
String laststr="";
int flag;//滑动窗口大小
int flag1;
if(str1.length()<str2.length())
{
laststr = str1;
str1 = str2;
str2 = laststr;
}
lengthmax = str1.length();
laststr="";
for(int i=0;i<str2.length();){
flag = 1;
for(int j=0;j<str1.length()-flag;){
flag1 = 0;
if(str2.substring(i,i+flag).equals(str1.substring(j,j+flag))){
while(str2.substring(i,i+flag).equals(str1.substring(j,j+flag))){
flag++;
flag1 =1;
if(i+flag>str2.length()||j+flag>str1.length())
break;
}
if(flag1==1)
flag--;
j=j+flag;
}
else{
j++;
}
// 长字符移位 +
if(flag>laststr.length())
{laststr = str2.substring(i,i+flag);//记录此时的字符串
}
}
i=i+1;
}
System.out.println(laststr);
}
}