[::-1]; реализация через цикл показывает понимание алгоритма и имеет временную сложность O(n).
[::-1]; реализация через цикл показывает понимание алгоритма и имеет временную сложность O(n).
Решение через срез
def reverse_string(value: str) -> str:
return value[::-1]Срез [::-1] создаёт новую строку, проходя по исходной справа налево.
Решение через цикл
def reverse_string(value: str) -> str:
result = []
for character in value:
result.append(character)
result.reverse()
return ''.join(result)Решение через два указателя
Если на собеседовании хотят увидеть именно алгоритм, можно преобразовать строку в список и менять символы с концов.
def reverse_string(value: str) -> str:
characters = list(value)
left = 0
right = len(characters) - 1
while left < right:
characters[left], characters[right] = characters[right], characters[left]
left += 1
right -= 1
return ''.join(characters)Пример
print(reverse_string('hello'))
# ollehСложность
Все варианты проходят по строке, поэтому временная сложность составляет O(n). Дополнительная память также обычно O(n), потому что строки в Python неизменяемы и для результата создаётся новый объект.
Как ответить на собеседовании
В Python могу использовать value[::-1], но если нужно показать алгоритм, применяю два указателя: меняю символы на левой и правой границе, двигая указатели навстречу. Временная сложность решения — O(n).
Оцени свой прогресс