Нужен метод, который принимает строку, а возвращает её перевернутый вариант (не reverse)

Все привет! Решаю задачу, вроде бы простая, но не могу дожать до конца. Нужно написать метод, который принимает строку, а возвращает ее перевернутый вариант

Пример входных параметров: a = "hello world"

Ожидается на выходе: "world hello"


  1. Создаю массив строк, добавляю в него элементы (слова из входящей строки), разбитые по пробелу через split.
  2. Вот тут их нужно поменять местами, как я пока не понял. Но есть мысли в сторону, что-то типа сортировки пузырьком, только не по величине сравнивать и менять местами, а так, если следующий элемент не пустой, то поменять текущий и следующий местами.
  3. Ну а тут счастливо вернуть результатирующий массив.

Подскажите, где я не прав и куда думать, пожалуйста.


Ответы (2 шт):

Автор решения: Igor

let a = "hello world we are cooking with gas";
let ar = a.split(" ");
for (let i = 0; i < ar.length / 2; i++) {
  [ar[i], ar[ar.length - i - 1]] = [ar[ar.length - i - 1], ar[i]];
}
b = ar.join(" ");
console.log(b);

→ Ссылка
Автор решения: Владимир Карсанов

Собственно решение:

public static void main(String[] args) {

    String orig = "I love study Java";
    String goal = "";
    String[] words = orig.split(" ");

    for (int i = words.length - 1; i >= 0; i--) {
        goal += words[i] + " ";
    }

    System.out.println(goal);
}

Ключевой момент решения заключается в том, чтобы правильно прочитать массив отдельных слов. Читать его нужно не с начала до конца, а наоборот -- с конца до начала. Поэтому цикл for организован так: for (int i = words.length - 1; i >= 0; i--). В i записываем индекс последнего элемента и листаем назад до пока i не будет равно 0 (индексу первого элемента).

→ Ссылка