Используйте рекурсивный метод для печати строки с удалением каждого второго символа - PullRequest
2 голосов
/ 06 февраля 2020

Я хочу удалить каждый второй символ из строки, используя рекурсивный метод.

    public static void main(String[] args) {
        System.out.println(everySecond("wonderful"));

    }
    public static String everySecond(String s) {

        if (s.length() % 2 != 0 ) {
            System.out.print(s.substring(0,1));
        }
        if (s.length() <= 1) {
            return s;
        }
        else {
                String simpler = everySecond(s.substring(1))+ s.charAt(0);
                return "";
        }
    }
}

В данный момент программа делает то, что мне нужно. Однако я хочу включить все в подрекурсивный вызов String simpler = everySecond(s.substring(1))+ s.charAt(0); return ""; и удалить приведенный ниже код.

if (s.length() % 2 != 0 ) {
            System.out.print(s.substring(0,1));
        }

Я довольно новичок в Java, поэтому я прошу прощения, если ответ очевиден. Я предполагаю, что я пропускаю очень простое c решение здесь.

1 Ответ

1 голос
/ 06 февраля 2020

Если оставшаяся длина строки <2, нам не нужно больше искать пропущенных символов. В противном случае нам нужен начальный символ, а затем остальная часть строки после второго символа (пропущенного), поэтому я сделал это так: </p>

  public static String removeEverySecondChar(String str) {
    if(str.length() < 2) {
      return str;
    }
    return str.substring(0,1) + removeEverySecondChar(str.substring(2));
  }

Ввод: Wonderful

Выход: Wnefl

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...