Функция определения анаграмм

Сравните количества вхождений каждого символа в обеих строках. Одинаковая длина обязательна; порядок символов не важен, но их кратность должна совпасть.

Короткий ответ

Что ответить на собеседовании

Сравните количества вхождений каждого символа в обеих строках. Одинаковая длина обязательна; порядок символов не важен, но их кратность должна совпасть.

Подробный разбор

Ответ с пояснениями

Условие

Реализуйте функцию, принимающую две строки. Если первая строка является анаграммой второй, функция должна вернуть True, в противном случае – False. Пример сигнатуры: def is_anagram(first: str, second: str) -> bool:

Ответ

Сравните количества вхождений каждого символа в обеих строках. Одинаковая длина обязательна; порядок символов не важен, но их кратность должна совпасть.

Вариант без сортировки:

def is_anagram(first: str, second: str) -> bool:
    if len(first) != len(second):
        return False
    counts = {}
    for char in first:
        counts[char] = counts.get(char, 0) + 1
    for char in second:
        if counts.get(char, 0) == 0:
            return False
        counts[char] -= 1
    return True

Время ожидаемо O(n), память O(k). Регистр, пробелы и Unicode-нормализация здесь значимы. Если нужно игнорировать их, это отдельное правило подготовки входа, не свойство анаграммы само по себе.

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

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

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

Подробнее