黑马程序员技术交流社区
标题:
【java基础】获取两个字符串中最大相同子串???
[打印本页]
作者:
为梦想而活着
时间:
2014-7-14 16:28
标题:
【java基础】获取两个字符串中最大相同子串???
本帖最后由 为梦想而活着 于 2014-7-15 16:31 编辑
毕老师讲解到这个的时候说的我不是很明白,再听还是不能明白,现在将我不明白的问题列下来求各位解答?
核心代码如下:
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)
return temp;
}
}
return "";
}
复制代码
我不明白的是内层循环中z指针的判断条件是
z!=min.length()+1; 我将其改为
z<min.length()+1;也可以啊。
还有就是
for(int y=0,z=min.length()-x; z!=min.length()+1; y++,z++) 里面的循环初始条件不是很明白,求解?
作者:
‖▍°_拾光
时间:
2014-7-14 19:12
那个内层循环中z的循环条件,我刚开始练的时候也是写后面那种形式z<min.length()+1,因为我们看惯了原始的for循环,里面的条件总是类似我们写的那样,是可以的。关于后面那个初始条件,我刚开始也是不懂,然后自己试着向毕老师那样动手画画,找到其中规律,你就明白了呀,其实你想想,就是一开始是那个小的字符串整个长度的时候,是不是只要比较一次即可,然后你再依次列出各自需要比较的次数,就找到规律啦!我的表述能力不是很好,不知道你是否能理解。希望可以给你一个小参考。
作者:
为梦想而活着
时间:
2014-7-15 16:31
‖▍°_拾光 发表于 2014-7-14 19:12
那个内层循环中z的循环条件,我刚开始练的时候也是写后面那种形式z
谢谢,最后我画了图,终于搞明白了······
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2