Используйте два указателя: находите гласные слева и справа и меняйте их местами. Остальные символы не перемещаются; для wonderful life получается wendirful lefo.
Сложность: EASY
Используйте два указателя: находите гласные слева и справа и меняйте их местами. Остальные символы не перемещаются; для 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, как следует из условия.