У вас есть две строки; как проверить, являются ли они анаграммами? Анаграммы — это слова или фразы, содержащие один и тот же набор символов, но в другом порядке. Например, “listen” и “silent” — анаграммы друг друга, потому что используют одни и те же буквы.
Если вы хотите проверить, являются ли две строки анаграммами, можно использовать
Counter() из модуля collections. Counter() поддерживает проверку на равенство. По сути, мы можем использовать его, чтобы проверить, равны ли переданные объекты. В приведённом ниже коде мы проверяем, являются ли a и b анаграммами.from collections import Counter
my_word = 'test'
another_word = 'stot'
print(Counter(my_word.casefold()) == Counter(another_word.casefold()))
Вывод: True
Мы также можем использовать функцию
sorted() для проверки, являются ли две строки анаграммами. По умолчанию функция sorted() сортирует переданную строку по возрастанию. Поэтому, когда мы передаём строки в sorted() и сравниваем их на равенство, сначала строки сортируются, а затем сравниваются. См. код ниже:def check_anagrams(str1, str2):
return sorted(str1) == sorted(str2)
my_word = 'lost'
another_word = 'stol'
result = check_anagrams(my_word, another_word)
print(result)
Если вы не хотите использовать какие-либо встроенные методы, можно воспользоваться ручным подходом. В этом методе вы пишете код, чтобы проверить, содержат ли обе строки одинаковые символы.
def check_anagrams(str1, str2):
if len(str1) != len(str2):
return False
for char in str1:
if str1.count(char) != str2.count(char):
return False
return True
my_word = 'lost'
another_word = 'stol'
print(check_anagrams(my_word, another_word))
Вывод: True
В этом коде сначала проверяется, имеют ли строки одинаковую длину. Если длины различаются, функция возвращает False.
👉 @PythonPortal