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

  Рет қаралды 17,147

Андрей += Пронин

Андрей += Пронин

Жыл бұрын

t.me/KZbinPronin Чат для общения 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 #питон #программирование #Андрей_Пронин #собеседование #

Пікірлер: 137
@AndyPronin
@AndyPronin Жыл бұрын
t.me/KZbinPronin Чат для общения 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)
@galandec2000
@galandec2000 6 ай бұрын
анаграма - is_anagram = lambda x1, x2: sorted(x1) == sorted(x2)
@vladislavr5390
@vladislavr5390 Жыл бұрын
Обе задачи в первой десятке уровня Easy на LeetCode
@7IdE
@7IdE Жыл бұрын
Из минусов: такие задачки, обычно, "в уме" решаются. И вообще странно, что человек, который активно затачивал алгосы, не решил эти задачи минуты за 3. И еще страннее, что не сразу понял, почему ИДЕ подчёркивает переменные. В целом - норм. Корнеркейсы рассматривает, в голове код прогоняет. Идеи нормальные пришли, примерно понимает цену базовых операций, действия обдуманные и тд. Как для человека, который не планирует идти в Яндексы и тд. - точно норм. Но тут надо сделать учёт, что задачи - элементарные. Типа мелтайс. Поэтому делать какие-то выводы на основании этих 2 задач - это преждевременно. И, мне кажется, что Руслан слегка лукавит насчёт того, что это частые задачи в ФААНГе - если только в качестве разогрева.
@vadimvadim1662
@vadimvadim1662 Жыл бұрын
народ, подписываемся, на 20к Андрей обещал начинать собес с подтягиваний))
@juliasamsonova7111
@juliasamsonova7111 Жыл бұрын
Руслан краш
@crazy_s9925
@crazy_s9925 Жыл бұрын
Может что-то поинтереснее, например на графы/деревья/структуры?
@artcrow2350
@artcrow2350 7 ай бұрын
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)
@ali-boom
@ali-boom 8 ай бұрын
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 Этот плох вариант?
@khovansky007
@khovansky007 Жыл бұрын
В задаче на лайфкодинге можно было проверить сперва, одинаковая ли длина, а потом выводить фолс, если количество буквы из первого слова не равно второму, а самом конце вывести тру. Почему сразу в голову пришло. Смотрел видос с Данилой из Г компании, там задачу решил за 20 сек, подобрав идеальнейший алгоритм. Либо я гений, либо, когда тебя интервьюируют, затуп начинается.
@user-xc2gu5jg9n
@user-xc2gu5jg9n Жыл бұрын
А если у нас буквы одинаковые, но в одном месте слов больше? Тогда будет лишние пробелы и len двух строк будет разным притом, что они все еще останутся анаграммами. То-есть "я кот" и "котя" в таком случае вернет false, хотя реально должно бы true.
@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
@galandec2000
@galandec2000 6 ай бұрын
анаграма - is_anagram = lambda x1, x2: sorted(x1) == sorted(x2) 😁думаю пробел проверить не затурднит, если надо.
@zloykrotz
@zloykrotz Жыл бұрын
def anagram(s, t): s = sorted(s) t = sorted(t) if s == t: return True else: return False print(anagram(s, t))
@user-de3op9hs4p
@user-de3op9hs4p 3 ай бұрын
А почему isalnum(), а не isalpha()? Если в исходной строке будет цифра, то ничего не выйдет ведь.
@user-sc9hv7vy4z
@user-sc9hv7vy4z 6 ай бұрын
В задаче на анаграму хватит и одного словаря. Асимптотика не изменится, но скорость раза в 1,5 вырастет, а доп. память в 2 раза меньше будет требоваться.
@AndyPronin
@AndyPronin 6 ай бұрын
?
@user-jo1pk8tv4f
@user-jo1pk8tv4f Жыл бұрын
А если, идти по одной строке и символ искать в другой строке (если не пробел) и удалять этот символ во второй. в конце должна получится пустая строка или с пробелами
@user-xd1su3sk3i
@user-xd1su3sk3i 9 ай бұрын
Нормально в теории, на практике большие накладные расходы на работу с памятью. Если только сделать связанный список, то вместо удаления нужно менять ссылки на next, prev. Но все равно стоимость st.
@user-ru2gn4uw4z
@user-ru2gn4uw4z Жыл бұрын
А задачу на анаграммы можно же решить так?) return sorted(a) == sorted(t)?)
@nataliegl8527
@nataliegl8527 Жыл бұрын
Можно) Но со сложностью в вашем решении хуже. В видео O(n), а сортировка O(n logn) кажется
@ivanabdullaev859
@ivanabdullaev859 Жыл бұрын
Когда он сказал что перебирать будет у меня челюсть отвалилась. Вот и все , какие софт-скилс ... Один вопрос про алгоритм и все понятно.
@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, пересечения сумм разных комбинаций букв не будет и можно просто будет сравнить суммы от первой и второй строки
@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
@user-xd1su3sk3i
@user-xd1su3sk3i 9 ай бұрын
Сортирнуть и в цикле сравнить посимвольно. Оно?
@stepaside6284
@stepaside6284 Жыл бұрын
def poly_check(str): return str.lower() == str.lower()[::-1] Такой вариант решения на поллиандром нельзя? Это без проверки символов на буквенность, но допилить ее же не проблема
@dds801
@dds801 Жыл бұрын
Если будут спец знаки, то должны исключить их
@Vladimir-re8xl
@Vladimir-re8xl Жыл бұрын
Забавно, скорее всего человек эти задачки уже решал, это easy с leetcode. Стоит ли предупреждать интервьюера об этом, если задачи знакомы?
@AndyPronin
@AndyPronin Жыл бұрын
Данил честно предупреждал. Руслан в своё время - нет)
@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)))
@IgorAlov
@IgorAlov Жыл бұрын
Интерсная задача, правда я на Си пишу, и сделал просто сложил бы все символы строк используя XOR, если получил ноль, то строки анограммы, в другом варианте нет. Ну а первым действием проверил бы длинну строк. На питоне, так как я не пишу на нем, то сделал бы сортировку строк, и по элементо сравнивал бы каждый элемент , и если бы нашел первое нк соответствие то вернул бы false.
@ic6406
@ic6406 Жыл бұрын
XOR идеальный подход, постоянно про него забываю. Мне первым делом в голову пришла сортировка и последующее сравнение
@alexey.kondakov
@alexey.kondakov 6 ай бұрын
XOR тут работать не будет.
@IgorAlov
@IgorAlov 6 ай бұрын
@@alexey.kondakov пояснить можешь почему не будет работать,
@alexey.kondakov
@alexey.kondakov 6 ай бұрын
​@@IgorAlov, могу.
@IgorAlov
@IgorAlov 6 ай бұрын
@@alexey.kondakov поянсишь?
@user-bb6cs6wk6y
@user-bb6cs6wk6y Жыл бұрын
Нельзя ли задание на амбиграмму сделать через sorted? Если sorted (str_1)==sorted(str_2) : True Иначе false. Ещё можно регистр не учитывать ,прописав в key лямбду определеную
@slavavahrushin6290
@slavavahrushin6290 11 ай бұрын
Можно, конечно, однако сортировка имеет сложность n log n, больше чем в его решении, которое работает за линию
@user-xd1su3sk3i
@user-xd1su3sk3i 9 ай бұрын
​​​@@slavavahrushin6290ужели, а опреатор dict == dict, скоко стоит? И в вашем чудесном мире мега алгоритмистов, операции со словарем конечно же бесплатны 😂
@justman073
@justman073 5 ай бұрын
@@user-xd1su3sk3i Сложность алгоритмов зависит не от их фактической скорости, а от зависимости от размера входных данных
@user-xd1su3sk3i
@user-xd1su3sk3i 5 ай бұрын
@@justman073 ещё один шизоид разговаривает в собственной вселенной, где он конечно же всех побеждает, с моим клоном :)
@justman073
@justman073 5 ай бұрын
@@user-xd1su3sk3i ?
@seoonlyRU
@seoonlyRU Жыл бұрын
огонь! лайк от СЕООНЛИ! я еще не надоел?)
@AndyPronin
@AndyPronin Жыл бұрын
Не переживай, надоешь -- будешь забанен))) На этой неделе тебе предстоит много лайков на этом канале.
@Bibliophilos
@Bibliophilos Жыл бұрын
Антон, тут очень дружелюбный канал, Андрей довольно гостеприимный блогер, не волнуйся :))
@gdvgoa
@gdvgoa 5 ай бұрын
во второй задаче метод isalnum() проверяет состоит ли строка из цифр или букв и если в строке будет цифра выдаст True. нужен метод isalpha().
@heybeachMIN
@heybeachMIN 28 күн бұрын
Цифры тоже могут быть например 101
@StrikerNSK1
@StrikerNSK1 Жыл бұрын
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 году уж можно обойтись без сортировки пузырьком как мне задали на одном из собеседований:))
@user-de3op9hs4p
@user-de3op9hs4p 3 ай бұрын
Задача на палиндром: def palindrom(string): ref = [x.lower() for x in string if x.isalpha()] s = ''''.join(ref) return s == s[::-1]
@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'.
@user-mw4yh4je3y
@user-mw4yh4je3y 6 ай бұрын
А если отсортировать два аргумента и сравнить? на 2 строки
@wad881988
@wad881988 5 ай бұрын
Если ты про анаграммы, то в таком случае сложность будет O(NlogN), что не очень хорошо, ведь через хэш-таблицы можно решить за O(N). Это решение можно указать как промежуточное и после этого перейти к оптимальному.
@kostya7469
@kostya7469 2 күн бұрын
ппц неуверенный человек. Нужно прокачивать навык самопрезентации, говорить громче, увереннее, артикулированнее.
@timur5987
@timur5987 Жыл бұрын
если разрешают встроенные функции - можно легко все решить, и почему ребята начитают писать так много кода? я начинаю терять мысль в таких случаях( def isPalindrome(s) : t ='' for i in s.lower(): if i.isalnum(): t += i return t == t[::-1]
@user-ur3mc6hb5d
@user-ur3mc6hb5d 5 ай бұрын
Зачем нужно создавать массив дополнительный?
@timur5987
@timur5987 5 ай бұрын
можно и свой метод написать и О(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 5 ай бұрын
@@timur5987 если что строка под капотом - это массив символов)
@shreezshreezers6067
@shreezshreezers6067 Жыл бұрын
from collections import Counter def anagram(s, t): return Counter(s) == Counter(t)
@MrBeltalowda
@MrBeltalowda Жыл бұрын
согласен, но второй каунтер - имхо лишняя память
@savel4ik387
@savel4ik387 10 ай бұрын
return sorted(s) == sorted(t)
@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 а как за константу решить?
@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
@get_out_it
@get_out_it 2 ай бұрын
Дизлайк за то что интервьюер не дал условие задачи текстом, не опсиал что такое анаграмма не дал ограничений по условию.
@crypto338
@crypto338 6 ай бұрын
Очень простые задачи --- 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 5 ай бұрын
Так у тебя медленные решения, поэтому тебе и легко показалось
@user-ur3mc6hb5d
@user-ur3mc6hb5d 5 ай бұрын
На палиндром вообще срезом массив создал лишний. В первой задаче у тебя сортед вернули 2 списка, это по памяти s+k, сравнение и сортировка дохуя времени отнимает
@heybeachMIN
@heybeachMIN 28 күн бұрын
в первой задаче надо словарь использовать, во второй два указателя.
@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 11 ай бұрын
у тебя сет оставляет лишь одни вхождения символов. То есть если в первой строке будет 3 символа «а», а в другой строке будет 4, то твой код оставит по одному из них. твой код сработает, но не должен по условию
@user-tr1fl1tw3o
@user-tr1fl1tw3o 7 ай бұрын
Ля, ладно. Может херню скажу. А чё нельзя просто инвертировать список? Ну строка это список, инвертируем список и сравниваем. Палиндром читается одинаково с обоих сторон, следовательно инвертация даст точно такой же список. Ну и там перед этим конечно вносим проверки на все исключения.
@AndyPronin
@AndyPronin 7 ай бұрын
Сложность какая будет? Кажется, не уложится
@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
@antipetya
@antipetya 5 ай бұрын
Я ваще ваш питон не знаю, но блин не легче сделать array_diff с символами которые хочет вставить ваш рекрутер - Пробелы и точки с запятой и тд. Потом тупо два массива сортировать и выда ть резултат сравнения. Я основываюсь на логике пхп, но пайтон должен был уложиться в меньшее кол-во строк чем этот чувак, который дичь пишет
@user-xd1su3sk3i
@user-xd1su3sk3i 9 ай бұрын
Решение таких задачек нужно, чтоб задрот никому ненужный интервьювер почуствовал себя важным, больше они никому и ни зачем не нужны.
@galandec2000
@galandec2000 6 ай бұрын
анаграма это по сути проверка на одинаков ли наш массив. отсортировали, сравнили. все! надо пробелы, ну чуть дописали... строка, преобразовали.)) анаграма - is_anagram = lambda x1, x2: sorted(x1) == sorted(x2) полидром - is_palindrome = lambda phrase: phrase == phrase[::-1] норм джун, прошел?😂 проверку пробела можете дописать.))
@user-ur3mc6hb5d
@user-ur3mc6hb5d 5 ай бұрын
Не прошел проверку на джуна
@heybeachMIN
@heybeachMIN 28 күн бұрын
ты проверку не прошёл
@ic6406
@ic6406 Жыл бұрын
В конце конечно ерунда про вовлечённость и прочее. В первую очередь люди идут в компанию чтобы зарабатывать деньги и опыт, а так же запись в своём резюме, не будем это скрывать и наигранно потом выдавать на собеседовании, это будет выглядеть откровенно глупо. Если человек подал на вакансию и его устраивает стек, то скорее всего задачи это ассорти (если не указано иное). На первых порах плевать чем заниматься, потому что человек даже предметную область скорее всего не знает
@mormone123
@mormone123 5 ай бұрын
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
@user-hq8he3et3f
@user-hq8he3et3f 6 ай бұрын
def anogram(s, t): lst = len(list(filter(lambda x: x if x in s else False, set(t)))) return lst == len(s)
@user-zx6fq1ig4h
@user-zx6fq1ig4h Жыл бұрын
А дать формализованное условие задачи текстом религия не позволяет? Или банальная лень?
@takiekakmi7532
@takiekakmi7532 Жыл бұрын
По задаче на анограммы: - сджойнить обе строки и выполнить xor поэлементно🙈 По палиндрому: - метод двух указателей
@devopserin
@devopserin Жыл бұрын
А что мы получим в результате с xor? Интересно просто как это работает...
@takiekakmi7532
@takiekakmi7532 Жыл бұрын
@@devopserin это операция побитового сдвига - есть свойство, что одинаковые биты аннегилируются. На выходе получаем искомый символ
@devopserin
@devopserin Жыл бұрын
@@takiekakmi7532 спасибо! Очень классный метод, и сортировка никакая не нужна, так как операция xor коммутативна) Подскажите пожалуйста, а насколько побитовые операции эффективны? Логика подсказывает, что они по идее должны выполняться быстрее любых других операций, но не знаю насколько это истинно утверждение)
@takiekakmi7532
@takiekakmi7532 Жыл бұрын
@@devopserin тут не скажу, т.к. не углублялся в данную тему.
@ic6406
@ic6406 Жыл бұрын
@@devopserin Эффективны
@TrainNoPain
@TrainNoPain Ай бұрын
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
@MakarMS
@MakarMS Жыл бұрын
Решение на анаграммы сводится к return set(a) == set(b) and len(b) == len(a)
@AndyPronin
@AndyPronin Жыл бұрын
Точно по памяти пройдёт?
@MainDoodler
@MainDoodler Жыл бұрын
"aaabb" и "abbba"
@BritScientist
@BritScientist Жыл бұрын
@@AndyPronin по памяти такое же, как в видео, но решение неправильное.
@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, "Гении мыслят одинаково" . Только чтоб решать такие простые задачи на интервью в яндексе, нужно сначала пройти их вырвиглазный контест.
@zloykrotz
@zloykrotz Жыл бұрын
def palindrom(s): s = s.split() s = ''.join(s) return s[:len(s)+1] == s[::-1]
@user-hq8he3et3f
@user-hq8he3et3f 6 ай бұрын
def polindrom(s): return s[::-1] == s
@DDR4605
@DDR4605 5 ай бұрын
Со срезами проще всего. Тут другое просят
@Viacha-wo3lb
@Viacha-wo3lb 5 ай бұрын
задачи на стажировку в детский садик
@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 когда у тебя длинные строки, лаконично становится шатким понятием)
Python собеседование Александр Воробьёв
53:52
Андрей += Пронин
Рет қаралды 44 М.
Собеседование python разработчик. Фадеева Вера
47:01
Андрей += Пронин
Рет қаралды 6 М.
Monster dropped gummy bear 👻🤣 #shorts
00:45
Yoeslan
Рет қаралды 12 МЛН
Stupid man 👨😂
00:20
Nadir Show
Рет қаралды 25 МЛН
Задача из Собеседования на 160,000 Евро в Год
13:27
Саша Лукин
Рет қаралды 1,1 МЛН
Решаем тестовое задание на позицию junior python backend разработчик
21:18
𝐧𝐞𝐫𝐝𝐢𝐳𝐚𝐲-𝐜𝐨𝐝𝐞
Рет қаралды 9 М.
Собеседование C++. Разработчик из Яндекс
53:31
Собеседование junior python разработчик | Сергей Афонин
1:15:20