Добавить в корзинуПозвонить
Найти в Дзене
От Джуна до Лида (IT Jobs)

Популярная задача из собеседования на должность junior-разработчика

Условие: дана строка, необходимо написать функцию, которая проверит является ли строка палиндромом или нет. Палиндром – это число, слово или фраза, одинаково читающиеся в обоих направлениях. Например, слово радар. Эта задача популярна у работодателей. Они любят задавать ее на собеседовании. Часто соискатели "закапываются" на решении этого вопроса. Прежде чем смотреть решение, предлагаю каждому попытаться решить задачу своим способом - так эта статья принесет пользу. У этой задачи десятки разнообразных способов решения, предлагаю свой: def palin (s): *создаем функцию l = len (s) *узнаем длину данной строки for i in range (l//2): *cоздаем цикл, который будет с помощью функции range бегать по строке (до середины), длину которой мы уже знаем. Поделим длину строки на 2. Используем целочисленное деление, т.к. если l нечетное, то будет ошибка в решении задачи. if s[i] != s[-1-i]: *cоздаем условие. Если первая часть строки равна второй, то это палиндром, иначе не палиндром. return ("Не палиндр

Условие: дана строка, необходимо написать функцию, которая проверит является ли строка палиндромом или нет. Палиндром – это число, слово или фраза, одинаково читающиеся в обоих направлениях.

Например, слово радар.

Эта задача популярна у работодателей. Они любят задавать ее на собеседовании. Часто соискатели "закапываются" на решении этого вопроса.

Прежде чем смотреть решение, предлагаю каждому попытаться решить задачу своим способом - так эта статья принесет пользу.

У этой задачи десятки разнообразных способов решения, предлагаю свой:

def palin (s): *создаем функцию

l = len (s) *узнаем длину данной строки

for i in range (l//2): *cоздаем цикл, который будет с помощью функции range бегать по строке (до середины), длину которой мы уже знаем. Поделим длину строки на 2. Используем целочисленное деление, т.к. если l нечетное, то будет ошибка в решении задачи.

if s[i] != s[-1-i]: *cоздаем условие. Если первая часть строки равна второй, то это палиндром, иначе не палиндром.

return ("Не палиндром")

return ("Палиндром")

-2

Но предложенная функция учитывает регистр, а также принимает знаки препинания за символы и начинает сравнивать их. Давайте исправим:

def palin (s):

l = len (s)

s = s.lower() *При помощи функции lower приводим все символы к нижнему регистру

m = ' ,-?!' *Создаем новую переменную, в которую кладем знаки препинания

for j in m:

s = s.replace (j,'')  *Создаем цикл, в котором с помощью функции replace меняем знаки препинания на пустоту

for i in range (l//2):

if s[i] != s[-1-i]:

return ("Не палиндром")

return ("Палиндром")

-3

На этом можно было бы и закончить решение, но можно и упростить программу. Python позволяет проверить является ли строка палиндромом без цикла:

def palin (s):

l = len (s)

s = s.lower()

m = ' ,-?!'

for j in m:

s = s.replace (j,'')

k = s[::-1] *Переворачиваем данную строку

if s != k: *Сравниваем данную и перевернутую строку

return ("Не палиндром")

return ("Палиндром")

-4

Нам удалось избавиться от цикла и решить задачу с помощью встроенных возможностей Python. Представленное выше решение — одно из десятков других. Не существует верного решения. Работодатель предлагает решить подобные задачи на собеседовании не для того, чтобы получить ответ. Интервьюер в первую очередь оценивает ход мыслей своего будущего сотрудника, поэтому не стесняйтесь рассуждать вслух и упрощать код, насколько это возможно.

Подписывайтесь на наш telegram канал где вы сможете найти актуальные вакансии для Python разработчиков любого уровня

#junior #python с нуля #it #задача #собеседования #hr