Удалите небуквенные символы, приведите буквы к одному регистру и сравните строку с обратной. Для первого примера нужно дополнительно считать ё и е эквивалентными.
Лёша на полке клопа нашёл. -> True
Удалите небуквенные символы, приведите буквы к одному регистру и сравните строку с обратной. Для первого примера нужно дополнительно считать ё и е эквивалентными.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Лёша на полке клопа нашёл. -> True Муха! О, муха! Велика аки лев! Ах, ум! О ах, ум! -> True "........,,,! " -> False
def is_palindrome(string_to_check: str) -> bool:
Ответ
Удалите небуквенные символы, приведите буквы к одному регистру и сравните строку с обратной. Для первого примера нужно дополнительно считать ё и е эквивалентными.
Пустой после очистки текст должен дать False, что прямо следует из примера с пунктуацией. Здесь учитываем только буквы; если цифры тоже значимы, замените isalpha на isalnum.
def is_palindrome(string_to_check: str) -> bool:
normalized = string_to_check.casefold().replace('ё', 'е')
letters = ''.join(c for c in normalized if c.isalpha())
return bool(letters) and letters == letters[::-1]
Оба приведённых предложения дают True. Нормализация ё/е — правило именно этой задачи, а не универсальное свойство палиндромов. Время и дополнительная память — O(n).