Сравните частоты каждого символа, а не только множества символов. Для heart и earth результат True.
Определение анаграмм строк
Сравните частоты каждого символа, а не только множества символов. Для heart и earth результат True.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо реализовать функцию, которая проверяет, являются ли две переданные строки анаграммами, то есть состоят из одинакового набора символов, но расположены в разном порядке.
word1 = 'heart'
word2 = 'earth'
def is_anagram(first, second) -> bool:
"""Check anagrams."""
pass
Ответ
Сравните частоты каждого символа, а не только множества символов. Для heart и earth результат True.
from collections import Counter
def is_anagram(first, second):
return Counter(first) == Counter(second)
Множества недостаточно: aab и abb содержат одинаковые разные символы, но их количества не совпадают. Решение требует O(n + m) времени и памяти, пропорциональной числу различных символов.
По умолчанию регистр, пробелы и пунктуация учитываются. Если их нужно игнорировать, нормализуйте обе строки одинаково до подсчёта. Одинаковые строки тоже удовлетворяют равенству частот; если условие требует обязательно отличающийся порядок, добавьте first != second как отдельную проверку.