Тёмный

Собеседование python разработчик. Алгоритмическая секция | Рабадан Ибрагимов 

Андрей += Пронин
Подписаться 25 тыс.
Просмотров 18 тыс.
50% 1

t.me/RU-vidPronin Чат для общения pyhton разработчиков и им сочуствующих. Свободное общение, тестовые и вопросы с собесов и прочее. Заходите, там вам рады.
Поддержать канал: www.tinkoff.ru/rm/pronin.andr...
Обычно денежка идёт на книжки про питончик. Но иногда на светлое и тёмное.
Виш лист
Хорошие книги по Питончику, которые могу рекомендовать (и хочу купить с вашей помощью).
Знакомство с Python | Бейдер Дэн (2023) - выглядит приятно для новичка
Чистый Python. Тонкости программирования для профи | Бейдер Дэн (2022) - хорошо для продолжения
Высоконагруженные приложения. Программирование, масштабирование, поддержка | Клеппман Мартин
Изучаем Python. Двухтомник. Марк Лутц. Очень подробно и структурно (Хочу дождаться 6го издания.. )
• Изучаем Python с Марко...
Читаем и разбираем ее тут
Куплено (огромное спасибо зрителям)
Python. К вершинам мастерства | Рамальо Лучано - 2е издание - сложно для новичка, но интересно
Паттерны разработки на Python: TDD, DDD и событийно-ориентированная архитектура -- хорошо про то, когда какой фреймворк применять
Видимо, дальше появтся еще нескромные желания. Но пока - так
Моя тележка andpronin -- стучите, если что.
Мой канал про обучению python с нуля и до мидла Андрей+=Пронин
/ @pypronin
Я в других сетях
🔗Вконтакте: CaptPronin
🔗Дзен: zen.yandex.ru/id/5fbd33919412...
#python #питон #программирование #Андрей_Пронин #собеседование #

Опубликовано:

 

5 фев 2023

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 138   
@AndyPronin
@AndyPronin Год назад
t.me/RU-vidPronin Чат для общения pyhton разработчиков и им сочуствующих. Свободное общение, тестовые и вопросы с собесов и прочее. Заходите, там вам рады. Поддержать канал: www.tinkoff.ru/rm/pronin.andrey156/3QNa723323 Обычно денежка идёт на книжки про питончик. Но иногда на светлое и тёмное.
@nmg_prm
@nmg_prm Год назад
Чрезмерное употребление пива вредит вашему здоровью)
@AndyPronin
@AndyPronin Год назад
@@nmg_prm светлое и тёмное дела) там про пиво ничего не сказано
@mr_killaura1456
@mr_killaura1456 Год назад
def anagram(s, t): return sorted(s) == sorted(t)
@IT_psychopath
@IT_psychopath 9 месяцев назад
анаграма - is_anagram = lambda x1, x2: sorted(x1) == sorted(x2)
@npc-r390
@npc-r390 Год назад
Обе задачи в первой десятке уровня Easy на LeetCode
@7IdE
@7IdE Год назад
Из минусов: такие задачки, обычно, "в уме" решаются. И вообще странно, что человек, который активно затачивал алгосы, не решил эти задачи минуты за 3. И еще страннее, что не сразу понял, почему ИДЕ подчёркивает переменные. В целом - норм. Корнеркейсы рассматривает, в голове код прогоняет. Идеи нормальные пришли, примерно понимает цену базовых операций, действия обдуманные и тд. Как для человека, который не планирует идти в Яндексы и тд. - точно норм. Но тут надо сделать учёт, что задачи - элементарные. Типа мелтайс. Поэтому делать какие-то выводы на основании этих 2 задач - это преждевременно. И, мне кажется, что Руслан слегка лукавит насчёт того, что это частые задачи в ФААНГе - если только в качестве разогрева.
@vadimvadim1662
@vadimvadim1662 Год назад
народ, подписываемся, на 20к Андрей обещал начинать собес с подтягиваний))
@juliasamsonova7111
@juliasamsonova7111 Год назад
Руслан краш
@crazy_s9925
@crazy_s9925 Год назад
Может что-то поинтереснее, например на графы/деревья/структуры?
@user-de3op9hs4p
@user-de3op9hs4p 6 месяцев назад
А почему isalnum(), а не isalpha()? Если в исходной строке будет цифра, то ничего не выйдет ведь.
@artcrow2350
@artcrow2350 10 месяцев назад
def anogram(s, t): set_s = set(s) count = 0 for i in set_s: if i in t and t.count(i) == s.count(i): count += 1 return count == len(set_s)
@zloykrotz
@zloykrotz Год назад
def anagram(s, t): s = sorted(s) t = sorted(t) if s == t: return True else: return False print(anagram(s, t))
@timur5987
@timur5987 Год назад
обычно задачи решают через хешмап, отличное решение было от Рабадана "по классике" def isAnagram(s, t) : if len(s) != len(t): return False countS, countT = {}, {} for i in range(len(s)): countS[s[i]] = 1 + countS.get(s[i], 0) countT[t[i]] = 1 + countT.get(t[i], 0) return countS == countT
@IT_psychopath
@IT_psychopath 9 месяцев назад
анаграма - is_anagram = lambda x1, x2: sorted(x1) == sorted(x2) 😁думаю пробел проверить не затурднит, если надо.
@khovansky007
@khovansky007 Год назад
В задаче на лайфкодинге можно было проверить сперва, одинаковая ли длина, а потом выводить фолс, если количество буквы из первого слова не равно второму, а самом конце вывести тру. Почему сразу в голову пришло. Смотрел видос с Данилой из Г компании, там задачу решил за 20 сек, подобрав идеальнейший алгоритм. Либо я гений, либо, когда тебя интервьюируют, затуп начинается.
@user-xc2gu5jg9n
@user-xc2gu5jg9n Год назад
А если у нас буквы одинаковые, но в одном месте слов больше? Тогда будет лишние пробелы и len двух строк будет разным притом, что они все еще останутся анаграммами. То-есть "я кот" и "котя" в таком случае вернет false, хотя реально должно бы true.
@user-jo1pk8tv4f
@user-jo1pk8tv4f Год назад
А если, идти по одной строке и символ искать в другой строке (если не пробел) и удалять этот символ во второй. в конце должна получится пустая строка или с пробелами
@user-xd1su3sk3i
@user-xd1su3sk3i Год назад
Нормально в теории, на практике большие накладные расходы на работу с памятью. Если только сделать связанный список, то вместо удаления нужно менять ссылки на next, prev. Но все равно стоимость st.
@ivanabdullaev859
@ivanabdullaev859 Год назад
Когда он сказал что перебирать будет у меня челюсть отвалилась. Вот и все , какие софт-скилс ... Один вопрос про алгоритм и все понятно.
@user-sc9hv7vy4z
@user-sc9hv7vy4z 9 месяцев назад
В задаче на анаграму хватит и одного словаря. Асимптотика не изменится, но скорость раза в 1,5 вырастет, а доп. память в 2 раза меньше будет требоваться.
@AndyPronin
@AndyPronin 9 месяцев назад
?
@user-ru2gn4uw4z
@user-ru2gn4uw4z Год назад
А задачу на анаграммы можно же решить так?) return sorted(a) == sorted(t)?)
@nataliegl8527
@nataliegl8527 Год назад
Можно) Но со сложностью в вашем решении хуже. В видео O(n), а сортировка O(n logn) кажется
@seoonlyRU
@seoonlyRU Год назад
огонь! лайк от СЕООНЛИ! я еще не надоел?)
@AndyPronin
@AndyPronin Год назад
Не переживай, надоешь -- будешь забанен))) На этой неделе тебе предстоит много лайков на этом канале.
@Bibliophilos
@Bibliophilos Год назад
Антон, тут очень дружелюбный канал, Андрей довольно гостеприимный блогер, не волнуйся :))
@vadimvadim1662
@vadimvadim1662 Год назад
ну версий много, перебор в расчёт не берём 1. создать два Counter и сравнить их(но часто на собесах просят не использовать готовые штуки из либ, в связи с чем идёт к следующему варианту 2. при условии, что длины слов равны, в одном цикле пройтись по обеим строкам сразу (хотя можно и отдельно это все ещё O(n) будет) и накопить два отдельных словаря, где ключ это буква, а значение количество этой буквы в слове (тот же Counter только ручками) и потом их сравнить 3. пройтись по строке s в цикле и создать словарь (ключ это буква, значение количество буквы в слове), затем в отдельном цикле пройтись по строке t и уменьшать значения( ну например в строке s у нас две буква «а», соотвественно в словаре будет «а»: 2, затем, когда проходимся по строке t мы встретили букву «а», делаем поиск через in в словаре [операция поиска в словаре за О(1) работает] вычитываем единичку из значения, получаем «а»: 1, когда снова встретили в строке t букву «а», снова поиск и снова уменьшаем, получаем «а»: 0, в каждой итерации цикла работает условие, если значение равно 0, значит этот ключ можно дропнуть) после завершения обработки строки t просто останется проверить пустой ли словарь, если да, то True, иначе False ps. не забываем, что в строке t может быть буквы, которой нет в строке s, соотвественно, метод get вам в помощь как минимум три варианта решения ps. решение с сортировкой в комменте ниже выполняется за O(nlogn), не круто вторая задача: метод двух указателей, идём слева и справа, и не забываем чекать, что символ str.isalpha()
@vadimvadim1662
@vadimvadim1662 Год назад
можно было не расписывать, чувак предложил норм вариант)
@57459N
@57459N Год назад
@@vadimvadim1662 по факту Вы расписал один и тот же вариант, что делать со словарями в данном случае сильно роли не играет. мне нравится решение этой задачи через сумму кодов символов: так как они начинаются от 65, пересечения сумм разных комбинаций букв не будет и можно просто будет сравнить суммы от первой и второй строки
@user-xd1su3sk3i
@user-xd1su3sk3i Год назад
Сортирнуть и в цикле сравнить посимвольно. Оно?
@cristianglodeanu2329
@cristianglodeanu2329 Год назад
Андрей, а не думали ли вы как нибудь собрать больше людей и побатлится в написании алгоритмов ,на том же codingbattle ? Думаю будет фаново ...
@cristianglodeanu2329
@cristianglodeanu2329 Год назад
Извиняюсь ** codingame
@AndyPronin
@AndyPronin Год назад
Чтл то похожее хочу в голодных играх затеять)
@Channel-kp7qo
@Channel-kp7qo Год назад
@@AndyPronin Если будете то сообщите на всех каналах пж
@TheRunnerSVO
@TheRunnerSVO Год назад
Если в слове пробелы есть, то можно добавить строчку на эту проверку. def is_palindrome(string: str) -> bool: left = 0 right = len(string) - 1 while left < right: if string[left] != string[right]: return False left += 1 right -= 1 return True
@laptimerlaptimer2117
@laptimerlaptimer2117 Год назад
def foo(a, b): return dict(map(lambda x: (x, a.count(x)) , set(a))) == dict(map(lambda x: (x, b.count(x)) , set(b)))
@gdvgoa
@gdvgoa 7 месяцев назад
во второй задаче метод isalnum() проверяет состоит ли строка из цифр или букв и если в строке будет цифра выдаст True. нужен метод isalpha().
@heybeachMIN
@heybeachMIN 3 месяца назад
Цифры тоже могут быть например 101
@user-mw4yh4je3y
@user-mw4yh4je3y 8 месяцев назад
А если отсортировать два аргумента и сравнить? на 2 строки
@wad881988
@wad881988 8 месяцев назад
Если ты про анаграммы, то в таком случае сложность будет O(NlogN), что не очень хорошо, ведь через хэш-таблицы можно решить за O(N). Это решение можно указать как промежуточное и после этого перейти к оптимальному.
@ali-boom
@ali-boom 11 месяцев назад
def is_anagramma(s1, s2): if len(s1) != len(s2): return False a1 = list(s1.lower()) a2 = list(s2.lower()) length = len(a1) i = 0 while i < length: if a1[i] not in a2: return False if a2[i] not in a1: return False i+=1 return True Этот плох вариант?
@Vladimir-re8xl
@Vladimir-re8xl Год назад
Забавно, скорее всего человек эти задачки уже решал, это easy с leetcode. Стоит ли предупреждать интервьюера об этом, если задачи знакомы?
@AndyPronin
@AndyPronin Год назад
Данил честно предупреждал. Руслан в своё время - нет)
@stepaside6284
@stepaside6284 Год назад
def poly_check(str): return str.lower() == str.lower()[::-1] Такой вариант решения на поллиандром нельзя? Это без проверки символов на буквенность, но допилить ее же не проблема
@dds801
@dds801 Год назад
Если будут спец знаки, то должны исключить их
@IgorAlov
@IgorAlov Год назад
Интерсная задача, правда я на Си пишу, и сделал просто сложил бы все символы строк используя XOR, если получил ноль, то строки анограммы, в другом варианте нет. Ну а первым действием проверил бы длинну строк. На питоне, так как я не пишу на нем, то сделал бы сортировку строк, и по элементо сравнивал бы каждый элемент , и если бы нашел первое нк соответствие то вернул бы false.
@ic6406
@ic6406 Год назад
XOR идеальный подход, постоянно про него забываю. Мне первым делом в голову пришла сортировка и последующее сравнение
@alexey.kondakov
@alexey.kondakov 9 месяцев назад
XOR тут работать не будет.
@IgorAlov
@IgorAlov 9 месяцев назад
@@alexey.kondakov пояснить можешь почему не будет работать,
@alexey.kondakov
@alexey.kondakov 9 месяцев назад
​@@IgorAlov, могу.
@IgorAlov
@IgorAlov 9 месяцев назад
@@alexey.kondakov поянсишь?
@user-bb6cs6wk6y
@user-bb6cs6wk6y Год назад
Нельзя ли задание на амбиграмму сделать через sorted? Если sorted (str_1)==sorted(str_2) : True Иначе false. Ещё можно регистр не учитывать ,прописав в key лямбду определеную
@slavavahrushin6290
@slavavahrushin6290 Год назад
Можно, конечно, однако сортировка имеет сложность n log n, больше чем в его решении, которое работает за линию
@user-xd1su3sk3i
@user-xd1su3sk3i Год назад
​​​@@slavavahrushin6290ужели, а опреатор dict == dict, скоко стоит? И в вашем чудесном мире мега алгоритмистов, операции со словарем конечно же бесплатны 😂
@justman073
@justman073 8 месяцев назад
@@user-xd1su3sk3i Сложность алгоритмов зависит не от их фактической скорости, а от зависимости от размера входных данных
@user-xd1su3sk3i
@user-xd1su3sk3i 8 месяцев назад
@@justman073 ещё один шизоид разговаривает в собственной вселенной, где он конечно же всех побеждает, с моим клоном :)
@justman073
@justman073 8 месяцев назад
@@user-xd1su3sk3i ?
@kostya7469
@kostya7469 2 месяца назад
ппц неуверенный человек. Нужно прокачивать навык самопрезентации, говорить громче, увереннее, артикулированнее.
@NoNoNo_Name
@NoNoNo_Name Год назад
def anagr(str1 = s, str2 = t): s = sorted(list(str1)) t = sorted(list(str2)) return s == t кто в определении сложности шарит, какой вариант первой задачи лучше - этот или из видео? def poly(str1 = s, str2 = t): s = ''.join(list(str1)[::-1]) return s == t и этот для второй задачки сравните плиз, если не трудно. не проходил еще алгоритмы и их сложность :(
@pretcb
@pretcb Год назад
по первой задаче можно воспользоваться Counter: from collections import Counter def anagram(s1: str, s2: str) -> bool: if (len(s1) == len(s2)) and (Counter(s1) == Counter(s2)): return True return False по полидромам str не нужно приводить к листу, т.к. они тоже поддерживают срезы def polidrome(s: str) -> bool: return all(ch.isalpha() for ch in s) and s == s[::-1] конечно можно все прописать руками и Counter и без использования срезов, но камон в 2023 году уж можно обойтись без сортировки пузырьком как мне задали на одном из собеседований:))
@nda861
@nda861 2 месяца назад
драбадан)
@MasterID
@MasterID Год назад
В питоне не строгая типизация или она не такая строгая? Думаю собес можно продолжать на лайте, с шутками и прикольчиками :)
@AndyPronin
@AndyPronin Год назад
Ашпе нестрогая, нашльника. Собесанама вель вель. нидавель. усталь уснуль.
@ruslanshakirov
@ruslanshakirov Год назад
Я так решил, чтобы не создавать 2 словаря: def anagram(s: str, t: str): count_dict = {} if len(s) == len (t): for i in range(len(s)): count_dict[s[i]] = count_dict.get(s[i], 0) + 1 count_dict[t[i]] = count_dict.get(t[i], 0) - 1 else: return False return not all(count_dict.values()) or not count_dict
@MakarMS
@MakarMS Год назад
return set(a) == set(b) and len(b) == len(a)
@BritScientist
@BritScientist Год назад
@@MakarMS попробуйте на таких строках: 'abbccc' и 'abbbcc'.
@andrewgapyuk3610
@andrewgapyuk3610 Год назад
def fn(x, y) : L_x=list(x) L_y=list(y) If sorted(L_x) ==sorted(L_y) : print True else: print False fn("robot", "rbtoo") =>> # True
@savel4ik387
@savel4ik387 Год назад
return sorted(s) == sorted(t)
@shreezshreezers6067
@shreezshreezers6067 Год назад
from collections import Counter def anagram(s, t): return Counter(s) == Counter(t)
@MrBeltalowda
@MrBeltalowda Год назад
согласен, но второй каунтер - имхо лишняя память
@artemlevin8982
@artemlevin8982 Год назад
def isanogram(s ,t): if set(s) == set(t): return True return False a = "listen" b = "silent" print(isanogram(a,b)) output: True может это быть как ответ на первую задачу или нужно через хешмап?
@antonshkvir8995
@antonshkvir8995 Год назад
у тебя сет оставляет лишь одни вхождения символов. То есть если в первой строке будет 3 символа «а», а в другой строке будет 4, то твой код оставит по одному из них. твой код сработает, но не должен по условию
@crypto-mech-arena
@crypto-mech-arena 9 месяцев назад
Очень простые задачи --- def is_anagram(s, t): return sorted(s) == sorted(t) assert is_anagram('silent', 'listen') == True assert is_anagram('silentt', 'listen') == False --- --- def is_palindrome(a): return a.lower() == a[::-1].lower() assert is_palindrome('abba') == True assert is_palindrome('abbA') == True assert is_palindrome('bbea') == False --- Мало того, я вижу что ребята в других собесах с вами же. Вообще не хотят использовать set(), и все что-то выдумывают сложное такое
@user-ur3mc6hb5d
@user-ur3mc6hb5d 8 месяцев назад
Так у тебя медленные решения, поэтому тебе и легко показалось
@user-ur3mc6hb5d
@user-ur3mc6hb5d 8 месяцев назад
На палиндром вообще срезом массив создал лишний. В первой задаче у тебя сортед вернули 2 списка, это по памяти s+k, сравнение и сортировка дохуя времени отнимает
@heybeachMIN
@heybeachMIN 3 месяца назад
в первой задаче надо словарь использовать, во второй два указателя.
@eyeseyeseyes3555
@eyeseyeseyes3555 Год назад
Я тоже начинающий python-разработчик и решил задачу на анаграмму так: def anagramm(s, t): if len(s) != len(t): return False d1 = {i: s.count(i) for i in s} return all(map(lambda sign: sign in d1 and t.count(sign) == d1[sign], t)) Кто может подсказать какие есть косяки в моём решении, что можно улучшить? Спасибо
@57459N
@57459N Год назад
По асимптотической сложности тут выходит О(n^2). Для данной задачи это решение не самое оптимальное, как сказали в видео, ее можно решить за константу по времени и константу по памяти. Также чтение последней строчки слегка затруднительно, хоть питон и позволяет всё писать в одну строчку, этим не стоит злоупотреблять
@kostya7469
@kostya7469 2 месяца назад
@@57459N а как за константу решить?
@timur5987
@timur5987 Год назад
если разрешают встроенные функции - можно легко все решить, и почему ребята начитают писать так много кода? я начинаю терять мысль в таких случаях( def isPalindrome(s) : t ='' for i in s.lower(): if i.isalnum(): t += i return t == t[::-1]
@user-ur3mc6hb5d
@user-ur3mc6hb5d 8 месяцев назад
Зачем нужно создавать массив дополнительный?
@timur5987
@timur5987 8 месяцев назад
можно и свой метод написать и О(1) по памяти сделать, но я хз кому такое надо, строка это не массив class Solution: def isPalindrome(self, s: str) -> bool: l, r = 0, len(s) - 1 while l < r: while l < r and not self.alphanum(s[l]): l += 1 while l < r and not self.alphanum(s[r]): r -= 1 if s[l].lower() != s[r].lower(): return False l += 1 r -= 1 return True # Could write own alpha-numeric function def alphanum(self, c): return ( ord("A")
@user-ur3mc6hb5d
@user-ur3mc6hb5d 8 месяцев назад
@@timur5987 если что строка под капотом - это массив символов)
@user-xd1su3sk3i
@user-xd1su3sk3i Год назад
Решение таких задачек нужно, чтоб задрот никому ненужный интервьювер почуствовал себя важным, больше они никому и ни зачем не нужны.
@user-tr1fl1tw3o
@user-tr1fl1tw3o 10 месяцев назад
Ля, ладно. Может херню скажу. А чё нельзя просто инвертировать список? Ну строка это список, инвертируем список и сравниваем. Палиндром читается одинаково с обоих сторон, следовательно инвертация даст точно такой же список. Ну и там перед этим конечно вносим проверки на все исключения.
@AndyPronin
@AndyPronin 10 месяцев назад
Сложность какая будет? Кажется, не уложится
@get_out_it
@get_out_it 5 месяцев назад
Дизлайк за то что интервьюер не дал условие задачи текстом, не опсиал что такое анаграмма не дал ограничений по условию.
@artcrow2350
@artcrow2350 Год назад
def get_anagrams(string_1, string_2): set_string = set(string_1) for i in set_string: if string_1.count(i) != string_2.count(i): return False return True
@MrBeltalowda
@MrBeltalowda Год назад
получается сложность (m+n)*m
@IT_psychopath
@IT_psychopath 9 месяцев назад
анаграма это по сути проверка на одинаков ли наш массив. отсортировали, сравнили. все! надо пробелы, ну чуть дописали... строка, преобразовали.)) анаграма - is_anagram = lambda x1, x2: sorted(x1) == sorted(x2) полидром - is_palindrome = lambda phrase: phrase == phrase[::-1] норм джун, прошел?😂 проверку пробела можете дописать.))
@user-ur3mc6hb5d
@user-ur3mc6hb5d 8 месяцев назад
Не прошел проверку на джуна
@heybeachMIN
@heybeachMIN 3 месяца назад
ты проверку не прошёл
@user-hq8he3et3f
@user-hq8he3et3f 9 месяцев назад
def anogram(s, t): lst = len(list(filter(lambda x: x if x in s else False, set(t)))) return lst == len(s)
@takiekakmi7532
@takiekakmi7532 Год назад
По задаче на анограммы: - сджойнить обе строки и выполнить xor поэлементно🙈 По палиндрому: - метод двух указателей
@devopserin
@devopserin Год назад
А что мы получим в результате с xor? Интересно просто как это работает...
@takiekakmi7532
@takiekakmi7532 Год назад
@@devopserin это операция побитового сдвига - есть свойство, что одинаковые биты аннегилируются. На выходе получаем искомый символ
@devopserin
@devopserin Год назад
@@takiekakmi7532 спасибо! Очень классный метод, и сортировка никакая не нужна, так как операция xor коммутативна) Подскажите пожалуйста, а насколько побитовые операции эффективны? Логика подсказывает, что они по идее должны выполняться быстрее любых других операций, но не знаю насколько это истинно утверждение)
@takiekakmi7532
@takiekakmi7532 Год назад
@@devopserin тут не скажу, т.к. не углублялся в данную тему.
@ic6406
@ic6406 Год назад
@@devopserin Эффективны
@ic6406
@ic6406 Год назад
В конце конечно ерунда про вовлечённость и прочее. В первую очередь люди идут в компанию чтобы зарабатывать деньги и опыт, а так же запись в своём резюме, не будем это скрывать и наигранно потом выдавать на собеседовании, это будет выглядеть откровенно глупо. Если человек подал на вакансию и его устраивает стек, то скорее всего задачи это ассорти (если не указано иное). На первых порах плевать чем заниматься, потому что человек даже предметную область скорее всего не знает
@antipetya
@antipetya 8 месяцев назад
Я ваще ваш питон не знаю, но блин не легче сделать array_diff с символами которые хочет вставить ваш рекрутер - Пробелы и точки с запятой и тд. Потом тупо два массива сортировать и выда ть резултат сравнения. Я основываюсь на логике пхп, но пайтон должен был уложиться в меньшее кол-во строк чем этот чувак, который дичь пишет
@user-de3op9hs4p
@user-de3op9hs4p 6 месяцев назад
Задача на палиндром: def palindrom(string): ref = [x.lower() for x in string if x.isalpha()] s = ''''.join(ref) return s == s[::-1]
@user-zx6fq1ig4h
@user-zx6fq1ig4h Год назад
А дать формализованное условие задачи текстом религия не позволяет? Или банальная лень?
@mormone123
@mormone123 8 месяцев назад
def palin(inp: str): str_len = len(inp) if str_len == 1: return True elif str_len % 2 == 0: border = int(str_len / 2) left = border - 1 right = border if left == 0: if inp[left] == inp[right]: return True else: return False while left != 0: if inp[left] == inp[right]: left -= 1 right += 1 continue else: return False return True else: mid = int(str_len / 2) left = mid - 1 right = mid + 1 if left == 0: if inp[left] == inp[right]: return True else: return False else: while left != 0: if inp[left] == inp[right]: left -= 1 right += 1 continue else: return False
@MakarMS
@MakarMS Год назад
Решение на анаграммы сводится к return set(a) == set(b) and len(b) == len(a)
@AndyPronin
@AndyPronin Год назад
Точно по памяти пройдёт?
@MainDoodler
@MainDoodler Год назад
"aaabb" и "abbba"
@BritScientist
@BritScientist Год назад
@@AndyPronin по памяти такое же, как в видео, но решение неправильное.
@TrainNoPain
@TrainNoPain 4 месяца назад
def is_palindrome(string: str, ) -> bool: """ >>> is_palindrome('aaaaaaaaaaaaaaaaaaaaa') True """ for i in range(len(string) // 2): if string[i] != string[~i]: return False return True
@user-zx6fq1ig4h
@user-zx6fq1ig4h Год назад
На фразе: - Сгенерировать все перестановки... Нужно было заканчивать интервью и гнать кандидата ссаными тряпками
@xewuss3750
@xewuss3750 Год назад
1. def check(s1: str, s2: str) -> bool: """меньше памяти, меньше времени""" ...: storage = {} ...: for letter in s1: ...: storage[letter] = storage.get(letter, 0) + 1 ...: for letter in s2: ...: temp = storage.get(letter, -1) - 1 ...: if temp == -1: ...: return False ...: if temp == 0: ...: storage.pop(letter) ...: else: ...: storage[letter] = temp ...: return len(storage) == 0 2. : def check(pal: str) -> bool: """менее громоздко""" ...: left = 0 ...: right = len(pal) - 1 ...: while left < right: ...: if not pal[left].isalpha(): ...: left += 1 ...: continue ...: if not pal[right].isalpha(): ...: right -= 1 ...: continue ...: if pal[left].lower() != pal[right].lower(): ...: return False ...: left += 1 ...: right -= 1 ...: return True ...:
@7IdE
@7IdE Год назад
Забавно, конечно. Во второй задаче у меня аналогичный код: функция у меня называется is_pal и принимает string. На это отличия заканчиваются. Даже нейминги совпадают. :D
@xewuss3750
@xewuss3750 Год назад
@@7IdE, "Гении мыслят одинаково" . Только чтоб решать такие простые задачи на интервью в яндексе, нужно сначала пройти их вырвиглазный контест.
@user-hq8he3et3f
@user-hq8he3et3f 9 месяцев назад
def polindrom(s): return s[::-1] == s
@DDR4605
@DDR4605 8 месяцев назад
Со срезами проще всего. Тут другое просят
@zloykrotz
@zloykrotz Год назад
def palindrom(s): s = s.split() s = ''.join(s) return s[:len(s)+1] == s[::-1]
@Viacha-wo3lb
@Viacha-wo3lb 7 месяцев назад
задачи на стажировку в детский садик
@undefined4992
@undefined4992 Год назад
def anagram(s, t): return sorted(s) == sorted(t)
@user-pc8xt3cg3w
@user-pc8xt3cg3w Год назад
🫡
@BakumenkoDima
@BakumenkoDima Год назад
Первое что пришло на ум. Данный товарищ что-то мудрить начал =)
@vadimvadim1662
@vadimvadim1662 Год назад
сортировка выполняется за nlogn, напрашивается решение за n
@undefined4992
@undefined4992 Год назад
@@vadimvadim1662 согласен, но это как самое лаконичное решение. А так, конечно, лучший вариант с Counter'ом или вручную считать его аналог
@vadimvadim1662
@vadimvadim1662 Год назад
@@undefined4992 когда у тебя длинные строки, лаконично становится шатким понятием)
Далее
🎸РОК-СТРИМ без ФАНЕРЫ🤘
3:12:10
Просмотров 1,4 млн
Top 7 Algorithms for Coding Interviews Explained SIMPLY
21:22
🎸РОК-СТРИМ без ФАНЕРЫ🤘
3:12:10
Просмотров 1,4 млн