У большинства учебных задач есть минимум два честных решения — сравним их.
Задача
Дана строка 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 · сравнивается · методом · налево · решение · тестах · задачи · через · стандартную · Полезно · препинания · короче
![Why Object.keys(user) Returns string[], Not (keyof User)[]: TypeScript Means It](https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2q4w48b9bzs43tynyhsf.png)
