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

Делаем срезы

Используем индексы и срезы с положительным и отрицательным шагом.

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

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

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

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

Ключевая идея · Срезы строки

Отрицательные индексы отсчитываются от конца, а отрицательный шаг разворачивает направление обхода.

Проверьте перед запуском

  • Третий символ имеет индекс 2.
  • Обратный срез через один начинается с последнего символа.
  • Вход должен содержать как минимум три символа.

Сравните свой подход

Ниже - готовое решение, другой способ, если он есть, и важные детали проверки.

Ваше принятое решение

Рекомендуемое решение: Срезы строки

Отрицательные индексы отсчитываются от конца, а отрицательный шаг разворачивает направление обхода.

s = input()
print(s[2])
print(s[-2])
print(s[:5])
print(s[:-2])
print(s[::2])
print(s[1::2])
print(s[::-1])
print(s[::-2])
print(len(s))

Время: O(n). Память: O(n) для строки и срезов.

Другой способ: Сборка по индексам

Явные диапазоны индексов воспроизводят каждый срез. Такой способ длиннее, но показывает, какие позиции выбираются.

s = input()
n = len(s)
print(s[2])
print(s[n - 2])
print(''.join(s[i] for i in range(min(5, n))))
print(''.join(s[i] for i in range(n - 2)))
print(''.join(s[i] for i in range(0, n, 2)))
print(''.join(s[i] for i in range(1, n, 2)))
print(''.join(s[i] for i in range(n - 1, -1, -1)))
print(''.join(s[i] for i in range(n - 1, -1, -2)))
print(n)

Время: O(n). Память: O(n) для строки и собираемых результатов.