获取两个字符串中最大相同子串
(“abcwerthelloyuiodef” “cvhellobnm”)
思路:
- 1,将短的那个子串按照长度递减的方式获取到。
- 2,将每获取到的子串去长串中判断是否包含,
如果包含,已经找到!
public class StringDemo05 {
public static void main(String[] args) {
String s1 = "abcwerthelloyuiodefcvhellobnm";
String s2 = "cvhellobnm";
System.out.println(getMaxSubString(s2,s1));
}
public static String getMaxSubString(String s1,String s2){
String maxStr = "";
String minStr = "";
//可以先判断哪个串比较大
maxStr = (s1.length()>s2.length())?s1:s2;//如果s1的长度大于s2的长度,则maxStr=s1,反之maxStr=s2
minStr = (maxStr==s1)?s2:s1;//如果maxStr=s1,则minStr=s2,否则反之
//外围的for循环的作用是,确定每次和长串比较的子串的长度,例如,当x=0时,就是整个短串和长串进行比较
for(int x=0;x<minStr.length();x++){
//内围的for循环的作用是,在外围for循环确定比较子串的长度前提下,遍历短串中的符合长度的子串分别是长串进行比较,y++,z++是固定比较子串的长度
for(int y=0,z=minStr.length()-x;z!=minStr.length()+1;y++,z++){
//for循环的执行顺序是先给赋值,再判断,执行语句,后++,再判断
String temp = minStr.substring(y, z);
// System.out.println(temp);
if(maxStr.contains(temp))//if(maxStr.indexOf(temp)!=-0)
{
return temp;
}
}
}
return "";
}
}