本帖最后由 吴波 于 2013-4-27 16:40 编辑
//获取两个字符串中最大相同子串
class StringDemo
{
public static String getMaxSubString(String s1,String s2)
{
String max = "",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++)
/*
可能有人会想z在这里代表什么?
答:z在这里代表的是角标,并且是尾角标
可能有人又会问z角标既然是尾角标,为什么会把min.length()-x赋给z,为什么不是min.length()-1-x?
答:个人认为影响这里的是下面用到的substring(begin,end)方法,
由于substring(begin,end)是一个包含头却不包含尾的方法,尾角标是取不到的,
所以不能用min.length()-1-x。
可能有人还会想为什么z!=min.length()+1,会让循环停下来?
答:其实这也是受到substring(begin,end)方法的影响,min.length()这个尾角标对应的值是不可能取得到的
但min.length()+1的话,min.length()这个尾角标对应的值就能取到
由于字符串中只能取到min.length()-1的值,所以只有z!=min.length()+1才会让循环停下来。
这三点明白了的同学,其他的就很好理解了。如果觉得本人写的有用的话,求给个赞,鼓励下俺。呵呵
*/
{
String temp = min.substring(y,z);
if(max.contains(temp))
return temp;
}
}
return "";
}
public static void sop(String str)
{
System.out.println(str);
}
public static void main(String[] args)
{
String s1="skjfoiasoewnwor ld kadsjfoiinas";
String s2="ksdjifiwwor ld sjaldkfj";
sop(getMaxSubString(s1,s2));
}
} |
|