gpt4 book ai didi

java - 递归isSubtring方法java

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:14:59 25 4
gpt4 key购买 nike

我有以下问题:

写一个递归静态方法 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com