Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: anagram, character

Что такое анаграммы и как алгоритмически определить, являются ли два слова анаграммами?

Этот вопрос проверяет понимание работы со строками, частотами символов и базовых алгоритмических приёмов.

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

Анаграммы — это слова, содержащие одинаковые буквы в одинаковом количестве, но расположенные в другом порядке. Чтобы проверить, являются ли два слова анаграммами, можно сравнить их отсортированные версии или посчитать количество вхождений каждого символа. Если множества букв и их частоты совпадают — слова анаграммы. Любой из этих методов работает за время O(n).

Длинный ответ

1. Что такое анаграммы

Определение:
Анаграммы — это строки, которые используют одинаковый набор символов с одинаковой частотой, но могут отличаться порядком букв.

Например:

  • "listen" и "silent"

  • "evil" и "vile"

1.1. Подход 1: сортировка строк

Если сортировать строки, анаграммы станут идентичными:

Python

def is_anagram(a: str, b: str) -> bool:
    return sorted(a) == sorted(b)

Плюсы:

  • короткий и понятный код.

Минусы:

  • сортировка требует O(n log n), что чуть медленнее альтернатив.

1.2. Подход 2: частоты символов (лучший вариант)

Можно подсчитать количество каждого символа и сравнить словари:

Python

from collections import Counter

def is_anagram(a: str, b: str) -> bool:
    return Counter(a) == Counter(b)

Преимущества:

  • работает за O(n);

  • хорошо подходит для больших строк.

1.3. Особые случаи

  • Регистр: нужно ли игнорировать (A vs a)?

  • Пробелы: учитываем или нет?

  • Unicode: важно при разных алфавитах.

Часто делают предварительную нормализацию.

1.4. Где это используется

  • Поиск слов-перестановок;

  • задачи на хеширование и группировку;

  • алгоритмические задачи на интервью.

Краткий вывод

Анаграммы определяются равенством частот символов. Лучший алгоритм — сравнение Counter, дающий линейную сложность и простоту реализации.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • Python

    Python

Ключевые слова

#anagram

#character

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.