黑马程序员技术交流社区

标题: 截取两个字符串中的最大相同子串问题。 [打印本页]

作者: 钟伟杰    时间: 2013-4-22 12:11
标题: 截取两个字符串中的最大相同子串问题。
本帖最后由 钟伟杰 于 2013-4-22 15:28 编辑

      
//下面是基础视频给出的功能代码。
       public static String getMexSubString(String s1,String s2)
       {
              for(int x=0;x<s2.length();x++)
              {
                     for(int y=0;z=s2.length-x;z!=s2.length()+1;y++,z++)
                     {
                            String temp = s2.substring(y,z);

                            if(s1.contains(temp))
                                   return temp;
                     }
              }
              return "";
       }

不明白第二个for循环内的判断条件z!=s2.length()+1;是什么意思?看了多次视频都懂,求解释。
作者: hdsjsql    时间: 2013-4-22 12:24
z!=s2.length()+1;是一个循环终止条件,z最大取值为s2.length().
当z=s2.length()时,String temp = s2.substring(y,z)中temp可以取到的最后一个元素位为z-1,即s2.length()-1,就是s2中的最后一个元素。
如果z=s2.length()+1,则最后一个元素位为s2.length(),显然角标越界了。所以z!=s2.length()+1
  
作者: 钟伟杰    时间: 2013-4-22 13:02
hdsjsql 发表于 2013-4-22 12:24
z!=s2.length()+1;是一个循环终止条件,z最大取值为s2.length().
当z=s2.length()时,String temp = s2.su ...

明白了,非常感谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2