黑马程序员技术交流社区
标题:
请教问题:关于自定义获取最大子串函数练习的疑问。[已解
[打印本页]
作者:
李征雪
时间:
2012-4-9 15:57
标题:
请教问题:关于自定义获取最大子串函数练习的疑问。[已解
本帖最后由 李征雪 于 2012-4-9 20:25 编辑
//Demo1309.java
class Demo1309
{
public static String getMaxSubString(String s1, String s2)
{
String tmp = null;
lab:for (int x = 0; x < s2.length(); x++)
{
for (int y = 0,z = s2.length() - x; y != z; y++,z++)
//for (int y=0,z=s2.length()-x; z!=s2.length()+1;y++,z++)
{
//String tmp = s2.substring(x,z);
//if(s1.contains(tmp));
//return tmp;
tmp = s2.substring(x,z);
if(s1.contains(tmp));
break lab;
}
}
//return "";
return tmp;
}
public static void main(String[] args)
{
String s1 = "kliuwhhelloliywhxluie";
String s2 = "hello";
String tmp = getMaxSubString(s1,s2);
System.out.println(tmp);
}
}
复制代码
这个是自己学习视频写的小练习,获取一个字符串的最大子串,注释行是毕老师在视频讲解中写的,
看第11行代码中的
z!=s2.length()+1
,我始终不明白这个条件是什么意思,明白的朋友帮我解释解释。
还有第15行和第21行的两个return语句,如何确定函数的返回值是哪一个?
作者:
贠(yun)靖
时间:
2012-4-9 16:58
因为substring() 是包含头不包含尾的 比如 abcd字符串 长度是length=4 要获得abcd的全部子串 就必须是substring(0,4)
如果你z!=length的话 子串最大只能得到 substring(0,3) 即 abc 子串 得不到abcd子串 所以必须加1 才能得到子串和该字符串相同的字符串
循环里面的return tmp 是返回找到的子串
外面的retrun 是返回null 表示没有找到该子串
作者:
贠(yun)靖
时间:
2012-4-9 16:59
因为substring() 是包含头不包含尾的 比如 abcd字符串 长度是length=4 要获得abcd的全部子串 就必须是substring(0,4)
如果你z!=length的话 子串最大只能得到 substring(0,3) 即 abc 子串 得不到abcd子串 所以必须加1 才能得到子串和该字符串相同的字符串
循环里面的return tmp 是返回找到的子串
外面的retrun 是返回null 表示没有找到该子串
作者:
胡元
时间:
2012-4-9 19:17
因为字符串的取子串方法含头不含尾,而且变量是递增的,所以z!=s2.length()+1的意思是
z最大是s2.length(),也就是长度,刚好作为末尾不被计算!
至于返回值,循环里的是如果找到最大子串返回的值,外面是没有找到符合条件的,
返回null
作者:
李征雪
时间:
2012-4-9 20:23
贠(yun)靖 发表于 2012-4-9 16:58
因为substring() 是包含头不包含尾的 比如 abcd字符串 长度是length=4 要获得abcd的全部子串 就必 ...
谢谢:handshake,呵呵,同时恭喜下,当版主拉。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2