Сегодня мы собираемся решить еще один популярный вопрос из 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 и надеюсь, что это принесет пользу и вам. Удачи на собеседованиях, счастливого кодирования :)