Easypalindrome

Как проверить палиндром?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Проверка палиндрома через two pointers с обоих концов или reverse.

# Строка: two pointers без extra memory
def isPalindrome(s):
    s = ''.join(c.lower() for c in s if c.isalnum())
    lo, hi = 0, len(s) - 1
    while lo < hi:
        if s[lo] != s[hi]:
            return False
        lo += 1; hi -= 1
    return True

# Число: reverse половины (без конвертации в строку)
def isPalindrome(x):
    if x < 0 or (x % 10 == 0 and x != 0):
        return False
    rev = 0
    while x > rev:
        rev = rev * 10 + x % 10
        x //= 10
    return x == rev or x == rev // 10

Linked List (LeetCode 234): fast/slow → middle, reverse второй половины, compare. Longest Palindromic Substring (LeetCode 5): expand around center O(n²), Manacher's O(n).

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.