Определение анаграмм строк

Сравните частоты каждого символа, а не только множества символов. Для 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 как отдельную проверку.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее