我应该递归地计算字符串中有多少个“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/