Сторнирование строки слов с помощью рекурсии - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь полностью изменить строку в java

Например, Good morning, поэтому вывод должен возвращать morning good.

Я опробовал приведенную ниже функцию

public static String reverse(String s)
    {
        if (s.isEmpty())
            return s;
        //int n = 0;
        return reverse(s.substring(1)) + s.charAt(0);

    }

Но указанная выше функция преобразует good morning в gninrom doog. Мой код работает над каждым символом, как я заставляю его работать над словами. Любая подсказка или руководство / объяснение будут оценены.

Я уже был на этот вопрос, но не решил мою проблему

Обновлено:

Попытка нижекод с помощью ответа @snr и комментариев @NathanHughes

public static String reverse(String s)
    {
        int s1 = s.indexOf(" ");


        if (s1 != -1) 
        {
         return reverse(s.substring(s1+1)) + s.substring(0,s1);
        }
        else
        {
            return "-1";
        }
    }

Но вывод

-1good

Ответы [ 2 ]

6 голосов
/ 16 октября 2019

Сначала вам нужно знать, где находятся пробелы.

public static String reverse(String str) {
   int space = str.indexOf(" ");
   return space == -1 ? str : reverse(str.substring(space + 1)) + " " + str.substring(0, space);
}
0 голосов
/ 16 октября 2019

Возможно, это не самый эффективный способ сделать это, но он работает:

public static String reverse(String s) {
    String[] wordList;
    wordList = s.split(" ");
    String reverseWordList = "";

    for (int i = 1; i <= wordList.length; i++) {
        reverseWordList += wordList[wordList.length - i] + " ";
    }

    reverseWordList = reverseWordList.trim();
    return reverseWordList;
}
...