Мини-урок · перед практикой

Две половинки

Точка разреза равна округлённой вверх половине длины.

Как к ней подойти

Потренируйтесь находить нужные символы и фрагменты строки, не теряя границы срезов.

Коротко о теме

У строки есть индексы, срезы и методы поиска. Индексация начинается с нуля, правая граница среза не включается. Перед сборкой ответа проверьте, что произойдёт, если искомый фрагмент отсутствует.

Ключевая идея · Рекомендуемое решение

Формула одинаково работает для чётной и нечётной длины, без 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).