Делаем срезы
Вы решили задачу. Теперь можно сравнить подходы.
Используем индексы и срезы с положительным и отрицательным шагом.
Авторский разбор для локальной версии на основе условия задачи. Это не выгрузка чужих посылок и не официальное решение исходного сайта.
Ваше принятое решение
Рекомендуемое решение: Срезы строки
Отрицательные индексы отсчитываются от конца, а отрицательный шаг разворачивает направление обхода.
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) для строки и собираемых результатов.
На что обратить внимание
- Третий символ имеет индекс 2.
- Обратный срез через один начинается с последнего символа.
- Вход должен содержать как минимум три символа.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.