递归计算java中的字符

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (3)

我需要一点帮助。我需要递归地编写这个方法:public static int howManyChar(String s,char c)并且不使用substring方法和循环..

有任何想法吗?我被困在这一点上。

public static int howManyChar (String s, char c)
{
    int count = 0;
    int lastChar = s.length()-1;
    if (s.length()== 0)
        return 0;
    if (s.charAt(lastChar) == c)
    {
       count++;
    }

我成功使用了substring方法:

    int count =0;
    if (s.charAt(0)==c)
        count++;
    if (s.length()>1)
    {
        count+=howManyChar(s.substring(1), c);
    }
    return count;

但我想在不使用子字符串的情况下编写代码。

提问于
用户回答回答于

试试这个

public static int howManyChar (String s, char c) { if (s.length()==0) return 0; return s.charAt(0) == c ? 1 : 0 + howManyChar(s.substring(1), c); }

或者,如果您不能使用substring方法

public static int howManyChar (String s, char c, int pos) { if (pos >= s.length()) return 0; return s.charAt(pos) == c ? 1 : 0 + howManyChar(s, c, ++pos); }

用户回答回答于
public static int howManyChar (String s, char c)
{
    index++;
        if (s.length() == index)
            return 0;
        else if(s.charAt(index) == c)
           return 1 + howManyChar(s, c);
        else
            return 0 +  howManyChar(s, c);

  }

现在这不是最好的解决办法,我有一个类级别变量(索引)保持字符串中的位置。但是,如果不使用子字符串,我无法想到更好的方法。

扫码关注云+社区

领取腾讯云代金券