gpt4 book ai didi

java - 初学编程练习(Java): recursively counting instances of substring in string (. equals()?)

转载 作者:行者123 更新时间:2023-11-29 03:23:42 25 4
gpt4 key购买 nike

我正在完成 Codingbat.com 上的一组在线练习以自娱自乐。一组练习侧重于递归编程。在其中一个练习中,我编写了以下函数来返回字符“x”在传递的字符串中的出现频率:

       public int countX(String str) {
/*Given a string, compute recursively (no loops) the number of lowercase 'x'
chars in the string.*/
if (str.length()< 1){
return 0;
}else if (str.charAt(0) == 'x'){
return countX(str.substring(1)) + 1;
}else{
return countX(str.substring(1));
}
}

根据 Codingbat 网站,这工作正常。

下一个练习是计算字符串中子字符串“hi”的出现频率。我尝试调整我以前的方法,使用 substring() 而不是 charAt():

       public int countHi(String str) {
/*Given a string, compute recursively (no loops) the number of times lowercase
"hi" appears in the string.*/
if (str.length()< 2){
return 0;
}else if (str.substring(0, 1).equals("hi")){
return countHi(str.substring(1)) + 1;
}else{
return countHi(str.substring(1));
}
}

然而,这总是返回0。看起来像测试条件

 }else if (str.substring(0, 1).equals("hi")){

从未遇到过,但我不知道为什么。希望有人能帮忙!

编辑:

正如 Steve 和 JustinKSU 指出的那样,我返回的是单个字符子字符串。我认为 substring() 方法中的索引号引用字符的索引,就好像它们存储在数组中一样(其中 0 表示第一个字符,1 秒等)它看起来像一个更好的思考方式是 substring() 索引表示字符串中字符分隔符的数量,从第一个字符之前的分隔符开始,(例如 substring(0, 1 ) 封装第一个字符)。

最佳答案

str.substring(0, 1)
只会返回一个字符,因此它永远不会匹配具有 2 个字符的“hi”。你应该试试

str.substring(0, 2) 代替

关于java - 初学编程练习(Java): recursively counting instances of substring in string (. equals()?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22184155/

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