Две строки — анаграммы, если они содержат одинаковые символы с одинаковыми частотами, независимо от порядка или регистра.
Самое чистое решение использует Counter из модуля collections Python:
from collections import Counter
def is_anagram(s1, s2):
return Counter(s1.lower()) == Counter(s2.lower())
s1.lower() и s2.lower() приводят обе строки к нижнему регистру для сравнения без учёта регистраCounter создаёт словарь частот символов для каждой строкиCounter возвращает True только если совпадают все символы и их количестваO(n) по временной сложностиsorted(s1.lower()) == sorted(s2.lower()) — проще, но медленнее: O(n log n)CounterПодход с Counter для проверки анаграмм имеет временную сложность O(n log n), потому что он должен сортировать частоты символов внутри.
Новый — ещё не проверен сообществом
Вы