Str 中 char 的递归计数 -- Java



伙计们我在一些非常基本的事情上遇到了一些问题。我有一个建议的解决方案,用于解决一个看起来像(下面)的问题,但我不明白countX == str.substring(1)的静态参数应该如何搜索整个字符串,参数是静态的1(?!?!):

   public int countX(String str) {
    if (str.length() == 0) return 0;
    if (str.charAt(0) == 'x') return 1 + countX(str.substring(1));
    return countX(str.substring(1));
}

相反,我在查找解决方案之前想到了这个解决方案,但无法弄清楚如何识别子字符串中最正确的字符以与搜索的字符"x"进行比较(行:3)

 public int countX(String str) {
  if (str.length()>0) {
    if (str.charAt(str.substring(str.length()-1) == 'x'))
      return countX (str.substring(str.length()-1)) + 1;
    else
      return countX (str.substring(str.length() -1)
  }
  else
    return 0;
}

对我对第一个解决方案的无知和我对第二个解决方案的错误有什么建议吗?提前致谢

让我解释第一个解决方案。这个想法是将字符串拆分为第一个字符和其余字符。

  • 如果第一个字符是 x,我们必须在计数中加 1 并递归继续。
  • 如果它不是 x,我们不必添加任何内容并递归继续。
  • 对于其余部分:让我们再次将其拆分为第一个字符和其余字符(又名递归)

为了同时捕获空字符串的情况,首先检查输入的长度。如果长度为 0,则 x 的计数为零。

最新更新