Я должен рекурсивно подсчитать, сколько «XX» находится в строке, если есть маленький x перед двойным X, его не следует считать. Я не уверен, что я делаю неправильно; Я, кажется, застрять на первом же возвращении, я получаю 0.Рекурсивно считать строку внутри строки java
UPDATE: У меня все работает похоже, но 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));
}
}
домашнее задание? http://stackoverflow.com/q/39758831/2710704 – Tokazio
Что должно быть возвратом, если строка «XXX» (1 или 2)? Другими словами, нужно ли считать совпадение «XX»? Если это так, уменьшите индекс позиции (аргумент подстроки) при вызове рекурсивно 'count'. –
Не ходите по два, если не увидите 'XX'. Проверьте, является ли символ 'x', если это так, отмените его для следующего вызова. Если это 'X', проверьте следующий, чтобы увидеть, является ли это' XX'. Если это так, добавьте '1'; в противном случае вернуть значение из следующего вызова. – dasblinkenlight