Задача

Дана строка 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 — длина строки.