Задача
Дана строка 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) по памяти, где n — длина строки.