【发布时间】:2012-10-28 20:42:08
【问题描述】:
下面是调用递归方法的代码:
if (isSubstring(str1, str2))
System.out.println ("\"" + str1 + "\" is a substring of " +
"\"" + str2 + "\"");
else
System.out.println ("\"" + str1 + "\" is not a substring of " +
"\"" + str2 + "\"");
这是我目前完成的方法,几乎可以工作了:
public static boolean isSubstring(String str, String target)
{
if (target.length() == 0)
return false;
if (str.equals(target))
return true;
else
return (isSubstring(str, target.substring(0,target.length()-1)));
}
所以如果str1作为“zzz”传递,str2作为“zzzabcdef”传递,那么它会返回true。但是,如果 str2 是“abczzzxx”或“abczzz”,它不会返回 true。有人有什么建议或想法吗?
【问题讨论】:
-
你的方法可以是一行:
return str.contains(target); -
我注意到您的
if (target.length() == 0)声明。您可能还想对 str 和 target 进行一些空检查。我喜欢使用StringUtils.isBlank()方法;见commons.apache.org/lang/api-2.5/org/apache/commons/lang/… -
@assylias 我想重点是用递归作为练习
-
@maasg 可能 - OP应该已经说清楚了。如果目标只是重新实现包含,那么查看源代码也可能具有指导意义。
标签: java methods recursion substring