目标
编写代码,获取到两个字符串中包含长度最长的相同子串。
思路
- 将短的字符串按照长度递减的方式获取到它的子串。
- 将每个获取到短字符串的子串去长字符串中判断是否包含,如果包含,则已经找到最大相同子串,返回该字符串。
编码
public static void sp(Object obj){
System.out.println(obj);
}
public static void main(String[] args){
String s1="abcwerthelloyuiodef";
String s2="cvhellobnm";
sp("s1和s2最大相同子串为:"+getMaxSubString(s1,s2));
}
public static String getMaxSubString(String s1,String s2){
String max="",min="";
max=(s1.length()>s2.length())?s1:s2;
min=(max==s1)?s2:s1;
// sp("max="+max+",min="+min);
for(int x=0;x<min.length();x++){
for(int y=0,z=min.length()-x;z!=min.length()+1;y++,z++){
String temp=min.substring(y,z);
// sp(temp);
if(max.contains(temp)){ // if(max.indexOf(temp)!=-1)
return temp;
}
}
}
return "";
}