← Назад к вопросам
Реверс слов в предложении
2.0 Middle🔥 181 комментариев
#Теория тестирования
Условие
Напишите функцию, которая разворачивает порядок слов в заданном предложении, не используя классы-коллекции.
Пример
Вход: "Hello World Test" Выход: "Test World Hello"
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Решение
Описание задачи
Необходимо развернуть порядок слов в строке без использования встроенных коллекций (List, Array, Vector и т.д.). Это требует творческого подхода к манипулированию строками с использованием стека вызовов или встроенных строковых операций.
Подход 1: Манипулирование символами
Реализуем логику вручную, проходя по строке и выделяя слова:
def reverse_words_manual(s: str) -> str:
result = ""
current_word = ""
for i in range(len(s) - 1, -1, -1):
char = s[i]
if char == " ":
if current_word:
result += current_word[::-1] + " "
current_word = ""
else:
current_word += char
if current_word:
result += current_word[::-1]
return result.strip()
Подход 2: Двойной реверс (для Python)
def reverse_words(s: str) -> str:
return " ".join(word for word in s.split()[::-1])
Подход 3: На JavaScript
function reverseWords(s) {
let result = "";
let currentWord = "";
for (let i = s.length - 1; i >= 0; i--) {
const char = s[i];
if (char === " ") {
if (currentWord) {
result += currentWord + " ";
currentWord = "";
}
} else {
currentWord = char + currentWord;
}
}
if (currentWord) {
result += currentWord;
}
return result.trim();
}
Анализ сложности
Временная сложность: O(n), где n - длина строки
Пространственная сложность: O(n) для хранения результата
Примеры использования
assert reverse_words("Hello World Test") == "Test World Hello"
assert reverse_words(" Hello World ") == "World Hello"
assert reverse_words("a") == "a"
assert reverse_words("") == ""
Ключевые моменты
- Обработка множественных пробелов
- Корректная работа с пробелами в начале и конце
- Идеальное решение имеет линейную сложность
- Без использования стандартных контейнеров типа List или Array