Skip to main content

Command Palette

Search for a command to run...

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

Updated
•2 min read•View as Markdown

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

Задача

Дана строка 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 · значение · объясним · работает · Разложим · копией · каждой · Сначала · справа · join(ch.lower · самый · Основной · знаков · данные · Азора · False · здесь · крайние · Результат · Убеждаемся · Именно

More from this blog

N

News

3825 posts