gpt4 book ai didi

java - 计数字母递归方法

转载 作者:行者123 更新时间:2023-12-03 11:17:14 25 4
gpt4 key购买 nike

所以程序必须计算字符串的字母。除了递归循环之外,我不允许使用循环。
该方法必须如下所示:

static int numberOf(String text, char characterToCount)
输入:

abcbabcba (String) and b (char)


输出:

4


这就是我的代码到目前为止的样子(我得到 Stackoverflow ):
static int numberOf(String text, char characterToCount) {
int i = 0;
int erg = 0;
if (text.length() != 0) {
if (i != text.length()) {
if (text.charAt(i) == characterToCount) {
i++;
erg++;
numberOf(text, characterToCount);
} else {
i++;
numberOf(text, characterToCount);
}
} else {
return erg;
}
}

return 0;
}
编辑
我只能使用 String.charAtString.length

最佳答案

问题是当你调用方法时你没有减少文本,所以长度永远不会减少到 0。这是你应该做的。请注意您不需要传递索引 到方法。每次只将文本减少 1,然后检查第一个字符是否与目标字符相等。

public static void main(String[] args) {
System.out.println(numberOf("ksjssjkksjssss", 's'));
}


static int numberOf(String text, char characterToCount) {
if (text.isEmpty()) {
return 0;
}

if (text.charAt(0) == characterToCount) {
// call method and add 1 since you found a character
return numberOf(text.substring(1), characterToCount) + 1;
}
// just call the method.
return numberOf(text.substring(1), characterToCount);

}
以上印
8
好的,这是我修改后的版本,以满足您只使用 String.length 的要求和 String.charAt . char 实际上是 16 位,所以我使用高位字节来存储当前索引。我为每个递归调用增加该索引以保持搜索的当前位置。当我添加 256到我真正添加的角色 1到高位字节。
static int numberOf(String text, char ch) {
// stop when index exceeds text length
if (ch >> 8 >= text.length()) {
return 0;
}
if (text.charAt((ch >> 8)) == (ch & 0xff)) {
return numberOf(text, (char)(ch + 256)) + 1;
}
return numberOf(text, (char)(ch + 256));
}
这不会像在某些宽度超过 8 位的字符集上写的那样工作。

关于java - 计数字母递归方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65453060/

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