Дан текст в виде слайса байт: слова из латинских букв и цифр, разделённые ровно
одним пробелом, без пробелов в начале и в конце. Разверните порядок слов —
на месте, без выделения памяти. Сами слова при этом читаются как раньше.
Это упрощённая версия LeetCode 151 (Reverse Words in a String): лишних пробелов
нет, зато нужна O(1) дополнительной памяти.
// ReverseWords разворачивает порядок слов в b на месте.
func ReverseWords(b []byte)
Примеры
"the sky is blue" → "blue is sky the"
"hello world" → "world hello"
"a" → "a"
"" → ""
Ограничения
0 ≤ len(b) ≤ 10⁶, только ASCII.
- Никаких аллокаций:
strings.Fields, strings.Split, новый слайс — не подходят.
- Ожидается O(n) по времени.
Устно: что изменится, если пробелов между словами может быть несколько, а в
начале и в конце строки — лишние пробелы (полная версия LeetCode 151)?
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.