Мини-урок · перед практикой
Две половинки
Точка разреза равна округлённой вверх половине длины.
Как к ней подойти
Потренируйтесь находить нужные символы и фрагменты строки, не теряя границы срезов.
Коротко о теме
У строки есть индексы, срезы и методы поиска. Индексация начинается с нуля, правая граница среза не включается. Перед сборкой ответа проверьте, что произойдёт, если искомый фрагмент отсутствует.
Ключевая идея · Рекомендуемое решение
Формула одинаково работает для чётной и нечётной длины, без if.
Проверьте перед запуском
- При нечётной длине первая половина длиннее.
- Не нужно разворачивать символы внутри половин.
После практики
Сравните свой подход
Ниже - готовое решение, другой способ, если он есть, и важные детали проверки.
Ваше принятое решение
Рекомендуемое решение
Формула одинаково работает для чётной и нечётной длины, без if.
s = input()
middle = (len(s) + 1) // 2
print(s[middle:] + s[:middle])
Время: O(n). Память: O(n).
Ещё один способ
Циклический сдвиг влево на длину первой половины переносит её в конец. Очередь дороже по памяти и здесь служит альтернативной моделью.
from collections import deque
s = input()
letters = deque(s)
letters.rotate(-((len(s) + 1) // 2))
print(''.join(letters))
Время: O(n). Память: O(n).