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

时间:2016-09-29 00:17:21

标签: 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));
}

}

1 个答案:

答案 0 :(得分:1)

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

首先检查两个字符,检查长度是否为两个或更多,然后拨打substring(0, 2)