gpt4 book ai didi

java - 递归和字符串相等函数的问题

转载 作者:行者123 更新时间:2023-12-01 17:22:35 25 4
gpt4 key购买 nike

' 代码假设在 str 的子字符串中查找目标。它将 str 的子字符串与目标进行比较。它从第一个子字符串开始比较(该子字符串由从 0 索引到 str 的 target.length-1 索引的字符组成)。如果 substring 不等于 target,它将删除 str 中的第一个字符并将其再次返回给函数。如果 str 长度小于目标长度,则返回 false。 '

'例如,如果 str = “superman” & target = “man”。与目标“man”相比,第一个子字符串是“sup”。这是错误的,因此“s”被删除。与“man”相比,下一个子字符串是“upe”,同样为假,因此“u”被删除。下一个带有“man”和“p”的“per”被删除。'

'直到与目标“man”相比子串为“man”。在这里,它应该返回 true,但它没有,而是继续删除“m”并继续'

“问题很可能出在第 7 行”

public static boolean contains(String str, String target) {
if(str == null || target == null) { //null check
return false;
}
if(str.length() < target.length()) { // when string has less size than target, naturally its false
return false;
} else if(target.equals(str.substring(0,target.length()-1))) { //this is where the problem is
//more specifically, it isn't comparing the strings.
//Here if str and target are equal they should return true, but when the target is equal to str, it doesnt return true, instead treats it is if target is not equal to str.
return true;
} else {
return contains(str.substring(1),target);
}
}

最佳答案

你是对的,问题出在第 7 行,你不必为目标减去 1。

方法:

public static boolean mycontains(String str, String target) {
if(str == null || target == null) {
return false;
}
if(str.length() < target.length()) {
return false;
} else if(target.equals(str.substring(0,target.length()))) {
return true;
} else {
return mycontains(str.substring(1),target);
}
}

关于java - 递归和字符串相等函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61265884/

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