Skip to main content

Step-by-step: palindrome check (part fee5)

Updated 2 min readMarkdown

Разложим решение на шаги и объясним, что происходит на каждом из них.

Задача

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

Разбор по шагам

  1. Шаг 1. Входные данные. Проверяем, что приходит в функцию, и какие значения считаются корректными.
  2. Шаг 2. Основной цикл. Именно здесь происходит вся работа; следим за изменениями переменных на каждой итерации.
  3. Шаг 3. Результат. Убеждаемся, что возвращаемое значение соответствует условию задачи, включая крайние случаи.

Когда каждый шаг понятен, доработка решения перестаёт быть лотереей.

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

python · ch.isalnum · строка · одинаково · лотереей · изменениями · здесь · join(ch.lower · значение · считаются · слева · копией · соответствует · Задача · данные · работы · памяти · налево · Входные · итерации · происходит · значения · Сначала · перестаёт · условию · Определить · случаи · каждый · Именно · Разбор

No comments yet. Be the first to comment.

More from this blog