Определение палиндрома строки без использования дополнительного пространства

Сравнивайте символы двумя индексами от краёв к центру. При первом различии верните False; если индексы встретились, строка — палиндром. Дополнительная память O(1).

Короткий ответ

Что ответить на собеседовании

Сравнивайте символы двумя индексами от краёв к центру. При первом различии верните False; если индексы встретились, строка — палиндром. Дополнительная память O(1).

Подробный разбор

Ответ с пояснениями

Условие

Реализуйте функцию, принимающую строку и возвращающую true, если она читается одинаково слева направо и справа налево. При этом решение не должно выделять дополнительную память (никакие массивы, новые строки и т.п.).

Ответ

Сравнивайте символы двумя индексами от краёв к центру. При первом различии верните False; если индексы встретились, строка — палиндром. Дополнительная память O(1).

Вариант с точным сравнением символов:

def is_palindrome(text):
    left, right = 0, len(text) - 1
    while left < right:
        if text[left] != text[right]:
            return False
        left += 1
        right -= 1
    return True

Пустая строка и строка из одного символа считаются палиндромами. Регистр, пробелы и пунктуация здесь значимы: их игнорирование не задано. В отличие от text[::-1], алгоритм не создаёт копию всей строки и выполняет O(n) сравнений.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее