我应该递归计算字符串中有多少“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));
}
}
答案 0 :(得分:1)
由于substring
调用中的结束索引是独占,substring(0, 1)
的调用永远不会返回两个字符的字符串;只返回由第一个字符组成的字符串。
首先检查两个字符,检查长度是否为两个或更多,然后拨打substring(0, 2)
。