Медленно и подробно: проверка палиндрома
Разложим решение на шаги и объясним, что происходит на каждом из них.
Задача
Дана строка s. Определить, читается ли она одинаково слева направо и справа налево, без учёта регистра и пробелов.
Решение
def is_palindrome(s: str) -> bool:
cleaned = ''.join(ch.lower() for ch in s if ch.isalnum())
return cleaned == cleaned[::-1]
print(is_palindrome("А роза упала на лапу Азора")) # True
print(is_palindrome("python")) # False
Как это работает
Сначала строка очищается от пробелов и знаков препинания методом isalnum(), затем сравнивается с перевёрнутой копией [::-1].
Пример работы
True
False
Сложность
O(n) по времени и O(n) по памяти.
Разбор по шагам
1. Шаг 1. Входные данные. Проверяем, что приходит в функцию, и какие значения считаются корректными. 2. Шаг 2. Основной цикл. Именно здесь происходит вся работа; следим за изменениями переменных на каждой итерации. 3. Шаг 3. Результат. Убеждаемся, что возвращаемое значение соответствует условию задачи, включая крайние случаи.
Читая чужой код, повторите тот же мысленный разбор по шагам — это самый быстрый способ научиться.