💼 Почти ни одно техническое собеседование не обходится без задания «Напишите функцию, которая определяет является ли строка палиндромом?»
🎓 Палиндром - это число, слово или текст, одинаково читающееся в обоих направлениях. Например, 101, «топот», «а роза упала на лапу Азора» являются палиндромами.
🎸 Рассмотрим несколько вариантов решения и сравним их по скорости:
✂️ Срезы
def is_palindrome(s):
return s == s[::-1]🔂 Цикл
def is_palindrome(s):
reversed_string = ""
for char in s:
reversed_string = char + reversed_string
return s == reversed_string
⏪ Функция reversed()
def is_palindrome(s):
return s == ''.join(reversed(s))
🔃 Рекурсия
def is_palindrome(s):
if len(s) <= 1:
return True
return s[0] == s[-1] and is_palindrome(s[1:-1])
🚇 По скорости и лаконичности выигрывает способ через обычные срезы, остальные можно просто использовать, чтобы удивить всех на собеседовании, особенно методом с рекурсией. 🤖 Небольшое задание, попробуйте добавить еще проверку на пробелы, знаки препинания и заглавные буквы. Ответы присылайте в комментарии.
😀 Подписаться
💬 Чат
#собеседование #python
