У большинства учебных задач есть минимум два честных решения — сравним их.

Задача

Дана строка 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) по памяти.

Альтернативный подход

Ту же задачу часто решают иначе: например, через рекурсию вместо цикла или через стандартную библиотеку вместо ручной реализации. Альтернатива обычно короче, но первое «ручное» решение лучше показывает механику работы алгоритма. Полезно написать оба и сравнить на одинаковых тестах.

Выбор между решениями — это баланс читаемости и скорости: для учебной задачи важнее первый.

Читайте также:

учёта · ch.isalnum · баланс · справа · одинаково · обычно · учебной · Азора · сравнить · читается · показывает · большинства · Выбор · isalnum · сравнивается · методом · налево · решение · тестах · задачи · через · стандартную · Полезно · препинания · короче