public class Test20 {
/*
题目描述
查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。
输入描述:
输入两个字符串
输出描述:
返回重复出现的字符
输入例子:
abcdefghijklmnop
abcsafjklmnopqrstuvw
输出例子:
jklmnop
*/
public static void main(String[] args) {
Scanner scn=new Scanner(System.in);
while(scn.hasNext()){
String str1=scn.nextLine();
String str2=scn.nextLine();
getCommonString(str1, str2);
}
//getCommonString("abcsafjklmnopqrstuvw", "abcdefghijklmnop");
}
public static void getCommonString(String str1,String str2){
if(str1.length()>str2.length()){
String str=str1;
str1=str2;
str2=str;
}
for (int i = str1.length(); i>0 ; i--) {
for (int j = 0; j +i<= str1.length(); j++) {
for (int k = 0; k +i<= str2.length(); k++) {
if(str1.substring(j, i+j).equals(str2.substring(k, i+k))){
System.out.println(str1.substring(j, i+j));
return ;
}
}
}
}
}
public static void getCommonString0(String str1,String str2){
if(str1.length()>str2.length()){
String temp=str1;
str1=str2;
str2=temp;
}
for (int i = str1.length(); i >0; i--) {
for (int j = 0; j +i<= str1.length(); j++) {
if(str2.contains(str1.substring(j, j+i))){
System.out.println(str1.substring(j, j+i));
return;
}
}
}
}
}