Сложность: EASY

Используйте два указателя: находите гласные слева и справа и меняйте их местами. Остальные символы не перемещаются; для wonderful life получается wendirful lefo.

Короткий ответ

Что ответить на собеседовании

Используйте два указателя: находите гласные слева и справа и меняйте их местами. Остальные символы не перемещаются; для wonderful life получается wendirful lefo.

Подробный разбор

Ответ с пояснениями

Условие

Сложность: EASY

Дана строка, состоящая из букв английского алфавита в нижнем регистре. Нужно вернуть строку, в которой гласные будут располагаться в обратном порядке

Пример: Input: hello world Output: hollo werld

Input: wonderful life Output: wendirful lefo

Ответ

Используйте два указателя: находите гласные слева и справа и меняйте их местами. Остальные символы не перемещаются; для wonderful life получается wendirful lefo.

def reverse_vowels(text):
    chars = list(text)
    vowels = set('aeiou')
    left, right = 0, len(chars) - 1
    while left < right:
        while left < right and chars[left] not in vowels:
            left += 1
        while left < right and chars[right] not in vowels:
            right -= 1
        chars[left], chars[right] = chars[right], chars[left]
        left += 1
        right -= 1
    return ''.join(chars)

Время O(n), память O(n) для списка и результата. Пробелы и согласные остаются на месте. Для hello world получается hollo werld. Алгоритм рассчитан на строчные английские гласные a, e, i, o, u, как следует из условия.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее