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 // 10Linked 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 подскажет развёрнутый ответ в реальном времени.