A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 为梦想而活着 于 2014-7-15 16:31 编辑

毕老师讲解到这个的时候说的我不是很明白,再听还是不能明白,现在将我不明白的问题列下来求各位解答?
核心代码如下:
  1. public static String getMaxSubString(String s1,String s2)
  2.         {

  3.                 String max = "",min = "";
  4.                 //得到大的那个子串
  5.                 max = (s1.length()>s2.length())?s1: s2;
  6.                 //得到小的那个子串
  7.                 min = (max==s1)?s2: s1;
  8.                
  9. //                sop("max="+max+"...min="+min);
  10.                
  11.                 //外层循环遍历整个小的那个子串
  12.                 for(int x=0; x<min.length(); x++)
  13.                 {        //内层循环遍历?
  14.                         for(int y=0,z=min.length()-x; z!=min.length()+1; y++,z++)
  15.                         {
  16.                                 String temp = min.substring(y,z);
  17.                                 
  18.                                 sop(temp);
  19.                                 if(max.contains(temp)
  20.                                         return temp;
  21.                         }
  22.                 }
  23.                 return "";
  24.         }
复制代码
我不明白的是内层循环中z指针的判断条件是 z!=min.length()+1; 我将其改为 z<min.length()+1;也可以啊。
还有就是for(int y=0,z=min.length()-x; z!=min.length()+1; y++,z++) 里面的循环初始条件不是很明白,求解?


2 个回复

倒序浏览
那个内层循环中z的循环条件,我刚开始练的时候也是写后面那种形式z<min.length()+1,因为我们看惯了原始的for循环,里面的条件总是类似我们写的那样,是可以的。关于后面那个初始条件,我刚开始也是不懂,然后自己试着向毕老师那样动手画画,找到其中规律,你就明白了呀,其实你想想,就是一开始是那个小的字符串整个长度的时候,是不是只要比较一次即可,然后你再依次列出各自需要比较的次数,就找到规律啦!我的表述能力不是很好,不知道你是否能理解。希望可以给你一个小参考。
回复 使用道具 举报
‖▍°_拾光 发表于 2014-7-14 19:12
那个内层循环中z的循环条件,我刚开始练的时候也是写后面那种形式z

谢谢,最后我画了图,终于搞明白了······
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马