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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 李征雪 于 2012-4-9 20:25 编辑
  1. //Demo1309.java

  2. class Demo1309
  3. {
  4.         public static String getMaxSubString(String s1, String s2)
  5.         {
  6.                 String tmp = null;
  7.                 lab:for (int x = 0; x < s2.length(); x++)
  8.                 {
  9.                         for (int y = 0,z = s2.length() - x; y != z; y++,z++)
  10.                         //for (int y=0,z=s2.length()-x; z!=s2.length()+1;y++,z++)
  11.                         {
  12.                                 //String tmp = s2.substring(x,z);
  13.                                 //if(s1.contains(tmp));
  14.                                         //return tmp;
  15.                                 tmp = s2.substring(x,z);
  16.                                 if(s1.contains(tmp));
  17.                                         break lab;
  18.                         }
  19.                 }
  20.                 //return "";
  21.                 return tmp;
  22.         }

  23.         public static void main(String[] args)
  24.         {
  25.                 String s1 = "kliuwhhelloliywhxluie";
  26.                 String s2 = "hello";

  27.                 String tmp = getMaxSubString(s1,s2);

  28.                 System.out.println(tmp);
  29.         }
  30. }
复制代码
这个是自己学习视频写的小练习,获取一个字符串的最大子串,注释行是毕老师在视频讲解中写的,
看第11行代码中的z!=s2.length()+1,我始终不明白这个条件是什么意思,明白的朋友帮我解释解释。

还有第15行和第21行的两个return语句,如何确定函数的返回值是哪一个?

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

4 个回复

倒序浏览
因为substring() 是包含头不包含尾的    比如  abcd字符串  长度是length=4  要获得abcd的全部子串  就必须是substring(0,4)
   如果你z!=length的话   子串最大只能得到 substring(0,3) 即 abc 子串  得不到abcd子串   所以必须加1 才能得到子串和该字符串相同的字符串
循环里面的return tmp  是返回找到的子串
  外面的retrun 是返回null  表示没有找到该子串
回复 使用道具 举报
因为substring() 是包含头不包含尾的    比如  abcd字符串  长度是length=4  要获得abcd的全部子串  就必须是substring(0,4)
   如果你z!=length的话   子串最大只能得到 substring(0,3) 即 abc 子串  得不到abcd子串   所以必须加1 才能得到子串和该字符串相同的字符串
循环里面的return tmp  是返回找到的子串
  外面的retrun 是返回null  表示没有找到该子串
回复 使用道具 举报
因为字符串的取子串方法含头不含尾,而且变量是递增的,所以z!=s2.length()+1的意思是
z最大是s2.length(),也就是长度,刚好作为末尾不被计算!
至于返回值,循环里的是如果找到最大子串返回的值,外面是没有找到符合条件的,
返回null
回复 使用道具 举报
贠(yun)靖 发表于 2012-4-9 16:58
因为substring() 是包含头不包含尾的    比如  abcd字符串  长度是length=4  要获得abcd的全部子串  就必 ...

谢谢:handshake,呵呵,同时恭喜下,当版主拉。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马