x表示对子串减少的个数,x=0表示完整子串。y表示子串的首字符位置,z表示子串的末位置。
当x=0时,由于此时子串长度为min.Length,所以此时y=0时,z=min.Length ,z-y=min.Length并没有超过长度啊!!
当x=1时,表示减少一个长度的子串。y=0时,z=min.Length-1... y=1时,z=minLength-1+1,...
当x=2时...
子串越来越短,直到找到在长串中存在的子串。
原始代码没有错误:
public class StringMaxSub {
public static void main(String[] args) {
String s1 = "akjknpojavawklsf";
String s2 = "poqljavaglkj";
System.out.println(getMaxSub(s2, s1));
}
public static String getMaxSub(String s1, String s2){
String max = "";
String min = "";
max = (s1.length() > s2.length()) ? s1 : s2;
min = (max == s1) ? s2 : s1;
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);
if(max.contains(temp)) {
return temp;
}
}
}
return "";
}
}
输出结果:java |