黑马程序员技术交流社区

标题: 请教这段代码的具体含义及分析 [打印本页]

作者: 薆情媬証書    时间: 2013-10-10 16:24
标题: 请教这段代码的具体含义及分析
这段代码来至毕老师的java视频中的一个练习:
题目:
        获取两个字符串中最大相同子串。
其中的一个循环是(如下图):

请亲们,使用通俗易懂的语言帮我分析分析这个循环,看了几遍视频,都不懂,其实讲的原理是懂得,
但代码就不是很清楚了,这种循环看着好晕!!!

作者: 薆情媬証書    时间: 2013-10-10 16:27
上面图片要是看不清,看下面一段类似的代码也行:
  1. public static void getMax(String s1, String s2)
  2.         {
  3.                 String ls = s1.length()>s2.length() ? s1:s2;
  4.                 String ss = ls==s1 ? s2:s1;
  5.                 for (int i=0; i<ss.length() ; i++ )
  6.                 {
  7.                         for (int y=0,z=ss.length()-i; z!=ss.length()+1 ; y++,z++ )
  8.                         {
  9.                                 String temp = ss.substring(y,z);
  10.                                 System.out.println(temp);
  11.                         }
  12.                 }
  13.         }
复制代码

作者: 斗胆潇洒    时间: 2013-10-10 17:55
以前分析这个自己画的图,希望对你有帮助。

它的主要思想,就是要从长到短去找出这个字串的所有组合,
若另一个字符串中包含其中一个组合就ok了,
i 主要是为限定z值的,告知z这次循环开始应该标志在哪里作为尾部,
y一直从0开始,而后随z一起移动,保证这次循环能取出同等长度的另一个字串
短字符串所有组合都出来了,找最大相同字串也就清楚了
作者: 斗胆潇洒    时间: 2013-10-10 18:03
额,这传上去图片真小啊,
如果你需要,反正我这个也是现成的,

最大字串for分析图.zip

78.94 KB, 下载次数: 176


作者: hyz123456    时间: 2013-10-10 18:10


希望能对你有帮助!


作者: 薆情媬証書    时间: 2013-10-10 23:40
hyz123456 发表于 2013-10-10 18:10
  • public static void getMax(String s1, String s2)
  •         {
  •                 String ls = s1.l ...

  • 谢谢,不过还是有点迷糊!!
    作者: chensc    时间: 2013-10-13 12:12
    学习学习!
    作者: chensc    时间: 2013-10-14 11:20
    学习学习!
    作者: chensc    时间: 2013-10-15 12:34
    学习学习!
    作者: chensc    时间: 2013-10-16 11:24
    学习学习!
    作者: chensc    时间: 2013-10-17 21:15
    学习学习!
    作者: chensc    时间: 2013-10-18 08:28
    学习学习!
    作者: chensc    时间: 2013-10-19 10:26
    学习学习!




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