作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有以下问题:
写一个递归静态方法 isSubstring,签名如下 -
public static boolean isSubstring(String s1,String s2)
获取两个字符串 - s1、s2,如果 s2 是 s1 的子字符串,则返回 true。
该方法应该是递归的,根本不使用迭代。还有你写的任何其他方法(如果你写的话)。
正确答案不会改变方法类型签名/注释(甚至不会通过重载)。
您只能在您的解决方案中使用以下方法:
公共(public)字符 charAt(int i)
公共(public)整数长度()
公共(public)字符串子串(int i)
这就是我目前所拥有的,我知道它不起作用 IE isSubstring("hello","ho") 将返回 true。知道可以做什么吗?
public static boolean isSubstring(String s1, String s2) {
if (s2.length() == 0)
return true;
if ((s1.length() == 0) || (s1.length() < s2.length()))
return false;
if (s1.charAt(0) != s2.charAt(0))
return isSubstring(s1.substring(1), s2);
else
return isSubstring(s1.substring(1), s2.substring(1));
}
最佳答案
我认为应该这样做。
它使用了辅助方法。当您看到第一个匹配项时,它将调用辅助方法并验证子字符串是否从该点开始匹配。如果没有,它会在下一场比赛中尝试同样的做法。
public static boolean isSubstring(final String s1, final String s2) {
if (s2.length() == 0) {
return true;
}
if ((s1.length() == 0) || (s1.length() < s2.length())) {
return false;
}
if (s1.charAt(0) != s2.charAt(0)) {
return isSubstring(s1.substring(1), s2);
}
if (!isSubstringAux(s1.substring(1), s2.substring(1))) {
return isSubstring(s1.substring(1), s2);
}
return true;
}
public static boolean isSubstringAux(final String s1, final String s2) {
if (s2.length() == 0) {
return true;
}
if (s1.charAt(0) == s2.charAt(0)) {
return isSubstringAux(s1.substring(1), s2.substring(1));
}
return false;
}
关于java - 递归isSubtring方法java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21615767/
我是一名优秀的程序员,十分优秀!