Нужен метод, который принимает строку, а возвращает её перевернутый вариант (не reverse)
Все привет! Решаю задачу, вроде бы простая, но не могу дожать до конца. Нужно написать метод, который принимает строку, а возвращает ее перевернутый вариант
Пример входных параметров: a = "hello world"
Ожидается на выходе: "world hello"
- Создаю массив строк, добавляю в него элементы (слова из входящей строки), разбитые по пробелу через split.
- Вот тут их нужно поменять местами, как я пока не понял. Но есть мысли в сторону, что-то типа сортировки пузырьком, только не по величине сравнивать и менять местами, а так, если следующий элемент не пустой, то поменять текущий и следующий местами.
- Ну а тут счастливо вернуть результатирующий массив.
Подскажите, где я не прав и куда думать, пожалуйста.
Ответы (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 (индексу первого элемента).