java - 递归计算字符串java中的字符串

标签 java string recursion counting

我应该递归地计算字符串中有多少个“XX”,如果双X前面有一个小x,则不应计算。我不确定我做错了什么;我似乎在第一次返回时就陷入了困境,我一直得到 0。

更新:我似乎一切正常,但 XXxXXX 一直被计为 1 而不是 2。

    public static int count(String s) {

        if ((s.length() < 2))
            return 0;
        int counter = 0;
        if (s.charAt(0)== 'x')
        {
        if (s.substring(0, 2).equals("xX"))
            return count(s.substring(3));

        }
        if (s.substring(0, 2).equals("XX")) {
            return 1 + count(s.substring(3));
        }
        else
            return counter + count(s.substring(1));
        }



public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner kb = new Scanner(System.in);
    System.out.println("Enter a String: ");
    String s = kb.nextLine();
    System.out.println( count(s));
}

}

最佳答案

由于 substring 调用中的结束索引是独占,因此 substring(0, 1) 调用永远不会返回两个- 字符串;仅返回由第一个字符组成的字符串。

要获取两个字符,首先检查长度是否为两个或更多,然后调用 substring(0, 2)

关于java - 递归计算字符串java中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39759480/

相关文章:

java - 如何在 Kryonet 中注册 Enum 类?

python - Python 2 和 3 中的字符串到字节

JavaScript promise 和递归 : is this a stack bomb?

java - 方法 String.getBytes() 是 big endian 还是 litter endian?

java - 如何在Java中使用ElasticSearch JSON DSL?

java - 旋转 JButton 的文本

javascript - 如何遍历javascript对象中的所有子文档?

php - 如何替换PHP中固定位置的字符?

string - T-SQL将单词拆分为字符

JavaScript 递归基本案例