我正在尝试从CodingBat.com解决此问题。 -https://codingbat.com/prob/p143900
我运行两次递归,然后减去它们的值以给出最终答案。 I和J分别获得正确的值,但是当我执行i-j时,结果没有意义。
public int countHi2(String str) {
if(str.length() == 0)
return 0;
int i = count(str, "hi");
int j = count(str, "xhi");
return i-j;
}
public int count(String str, String match)
{
int i = str.indexOf(match);
if(i != -1)
return 1 + countHi2(str.substring(i+match.length()-1));
else
return 0 + countHi2(str.substring(1));
}
答案 0 :(得分:0)
您可能想使用:
str.substring(i+match.length())
假设您的匹配项位于索引 3 上,并且要匹配的单词的长度为 2 ,那么您希望来自索引 5 的子字符串到最后。 因此,
str.substring(5);
其中包含索引 5
不过,我不明白您为什么使用
return 0 + countHi2(str.substring(1));
因为如果找不到匹配项,此条件将成立,那么在子字符串中再次检查匹配项又有什么意义呢!
答案 1 :(得分:0)
我认为您非法对待type
。您不应该使用外部方法,甚至不要分割字符串。
None