Ctrl K

Обратный порядок слов на месте

Средняя
Дан список символов chars — фраза из слов, разделённых ровно одним пробелом, без пробелов в начале и в конце. Слово — это непрерывная последовательность символов без пробелов. Переставьте слова в обратном порядке, сами слова при этом читаются как прежде. Верните список с переставленными словами. Попробуйте не заводить дополнительный список: переставьте символы прямо в chars и обойдитесь O(1) памяти.
Пример 1
chars=['g', 'o', ' ', 'f', 'a', 's', 't'] → ['f', 'a', 's', 't', ' ', 'g', 'o']

Слова go и fast меняются местами: список становится ['f', 'a', 's', 't', ' ', 'g', 'o'].

Пример 2
chars=['A', ' ', 'b', ' ', '7'] → ['7', ' ', 'b', ' ', 'A']

Получается ['7', ' ', 'b', ' ', 'A'].

Пример 3
chars=['o', 'k'] → ['o', 'k']

Слово одно — список не меняется.

Ограничения
  • 1 ≤ len(chars) ≤ 10⁵
  • Каждый chars[i] — латинская буква, цифра или пробел
  • Есть хотя бы одно слово
  • Пробелов в начале и в конце нет, слова разделены ровно одним пробелом
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый длинный зеркальный кусок СредняяСлова в обратном порядке СредняяРовно одна правка СредняяКакая версия новее СредняяУпаковка серий на месте Средняя
загружаем Python…
Вход
chars=['g', 'o', ' ', 'f', 'a', 's', 't']
Ожидается
['f', 'a', 's', 't', ' ', 'g', 'o']

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 32 теста на сервере, включая скрытые.