本帖最后由 klas2008 于 2012-3-25 01:24 编辑
新手提问,请多关照~
在毕老师day13里面StringTest3中,题目是:获取两个字符串中最大相同子串。
有个问题是,假如s1中最大相同字串不止一个(比如ab是,mn也是),应该如何修改下或者添加语句提高程序的健壮性,使应有的最大字串都打印出来呢?
也就是,两个字符串String s1 = "abmn"; String s2 = "abcdefghijklmn"; 运行后结果为ab,如何使其结果为ab与mn?
代码如下:
class StringTest3
{
public static String getMaxSubString(String s1,String s2)
{
String max = "",min = "";
max = (s1.length()>s2.length())?s1: s2;
min = (max==s1)?s2: s1;
// sop("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);
//sop(temp);
if(max.contains(temp))//if(s1.indexOf(temp)!=-1)
return temp; //return ab后就退出了,事实上还有mn
}
}
return "";
}
public static void main(String[] args)
{
String s1 = "abmn"; //稍微改了下s1的内容
String s2 = "abcdefghijklmn";
sop(getMaxSubString(s2,s1));
}
public static void sop(String str)
{
System.out.println(str);
}
}
|