/*** @Title: 问题:有两个字符串str1和str2,求出两个字符串中最长公共字符串。
*@author匹夫(在YW的数据基础上再次延伸)
* @date 2017年4月19日 下午8:08:37*/
public classDemo1 {/*//减0 个字符 内循环1次
k2.substring(0, 7);//外循环第1次_内循环第1次
//减一个字符 内循环2次
k2.substring(0, 6);//外循环第2次_内循环第1次
k2.substring(1, 7);//外循环第2次_内循环第2次
//减两个字符 内循环3次
k2.substring(0, 5);// 外循环第3次_内循环第1次
k2.substring(1, 6);// 外循环第3次_内循环第2次
k2.substring(2, 7);// 外循环第3次_内循环第2次
//减3个字符 内循环4次
k2.substring(0, 4);// 外循环第4次_内循环第1次
k2.substring(1, 5);// 外循环第4次_内循环第2次
k2.substring(2, 6);// 外循环第4次_内循环第3次
k2.substring(3, 7);// 外循环第4次_内循环第4次*/
public static voidmain(String [] args){
String k1= "10101121018";
String k2= "101210182";
String max= null;
String max_str= null;
String min_str= null;if(k1.length()==k2.length()){
max_str=k1;
min_str=k2;
}else if(k1.length()>k2.length()){
max_str=k1;
min_str=k2;
}else{
max_str=k2;
min_str=k1;
}int index = 0;for(int x=min_str.length();x>=0;x--){int b =x;boolean flag = false;for(int y=0;y<=min_str.length()-x;y++){
index++;int v =y;
String wait_max=min_str.substring(v, b);if(max_str.contains(wait_max)){
max=wait_max;
flag= true;break;
}
b++;
}if(flag){break;
}
}
System.out.println(index);
System.out.println(max);
}
}