黑马程序员技术交流社区
标题:
小代码,求指出错误,关于字符串比较方面的.....
[打印本页]
作者:
wahaha
时间:
2013-3-7 01:33
标题:
小代码,求指出错误,关于字符串比较方面的.....
获取两个字符串中最大相同字串,我写成下面这样,达不到想要的结果..请问哪里错了呢???
public static String sameString_2(String str1,String str2)
{
for(int x = 0;x<str1.length();x++)
{
for(int y=0;y<=str1.length();y++)
{
String str = str1.substring(x,y);
if(str2.contains(str))
return str;
}
}
return "";
}
作者:
lzw123451
时间:
2013-3-7 01:47
获取两个字符串中最大相同字串
if(str2.contains(str))
return str;
你这里的意思是 只要str2包含str就返回str 而你截取的字符串中第一个符合此条件的就会返回,不一定是最大通大字串。
String str = str1.substring(x,y);
这个 substring(x,y); 这里如果循环继续的话x的值就会大于y的值,是会报异常的。
作者:
wahaha
时间:
2013-3-7 02:19
次奥...终于弄白咋回事了...NND...今天是肿么了..老是短路..
代码调试完毕,求筒子们更优化的代码,求交流~~~
public static String sameString_2(String str1,String str2)
{
int num = 0;
String temp ="";
for(int x = 0;x<str2.length();x++)
{
for(int y=str2.length();y>x;y--)
{
String str = str2.substring(x,y);
if(str1.contains(str)&&str.length()>num)
{
num = str.length();
temp = str;
}
}
}
return temp;
}
作者:
amen0205
时间:
2013-3-7 02:26
你的两个for循环 当x的值大于y时会产生错误,而且你要求的代码是获取str1和str2中的最大相同子串
public static String sameString_2(String str1,String str2)
{
for(int x = 0;x<str1.length();x++)
{
for(int y=0,z=str1.length()-x;z!=str1.length()+1;y++,z++)//用y 和 z来截取str1 x来控制循环次数
{
String str = str1.substring(y,z);
if(str2.contains(str))
return str;
}
}
return "";
}
复制代码
代码可以这样写
作者:
lzw123451
时间:
2013-3-7 02:37
夏添 发表于 2013-3-7 02:19
次奥...终于弄白咋回事了...NND...今天是肿么了..老是短路..
代码调试完毕,求筒子们更优化的代码,求交流~~~ ...
毕老师好像有讲这题哦
这样做,从x=0开始,y从后面开始递减,获取的第一个符合字符串依然可能不是最大子串。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2