Сегодня мы собираемся решить еще один популярный вопрос из Neetcode 150, и он касается проверки того, являются ли две строки анаграммами или нет. Его часто спрашивают в таких компаниях, как Google, Microsoft и т. д.
Имея две строки s
и t
, вернуть true
если t
является анаграммой s
, и false
в противном случае.
Анаграмма – это слово или фраза, образованная путем перестановки букв другого слова или фразы, обычно с использованием всех исходных букв ровно один раз.
Input: s = "anagram", t = "nagaram" Output: True from collections import Counter class Solution(object): def isAnagram(self, s, t): return Counter(s) == Counter(t) if __name__ == "__main__": s, t = "anagram", "nagaram" print(Solution().isAnagram(s, t)) #output is True
Метод
isAnagram()
использует функциюCounter()
из модуляcollections
для подсчета вхождений каждого символа в обе строкиs
иt
. ФункцияCounter()
принимает итерируемый объект (например, список или строку) в качестве входных данных и возвращает словарь с элементами итерируемого объекта в качестве ключей и их вхождениями в качестве значений.
Затем метод сравнивает два словаря с помощью оператора ==
, который сравнивает, совпадают ли элементы в словаре или нет. Если словари одинаковы, это означает, что две входные строки содержат одни и те же символы и одинаковое количество вхождений каждого символа и, следовательно, являются анаграммами.
Блок if __name__ == "__main__":
в нижней части кода — это обычная идиома в Python для проверки, выполняется ли скрипт напрямую или он импортируется как модуль. Если он запускается напрямую, блок выполняется, и две примерные строки 'anagram' и 'nagaram' передаются методу isAnagram()
, который возвращает True
, указывая, что две строки являются анаграммами друг друга.
Следуйте за мной на GiTHub здесь: -
Ознакомьтесь с одной из моих других проблем с Neetcode 150 здесь.
Я собираюсь ответить на все эти вопросы Neetcode 150 и надеюсь, что это принесет пользу и вам. Удачи на собеседованиях, счастливого кодирования :)