Анаграммы
Те же буквы — то же слово: частоты символов решают за один проход.
1function isAnagram(a: string, b: string): boolean {2 if (a.length !== b.length) return false3 4 const counts = new Map<string, number>()5 for (const ch of a) counts.set(ch, (counts.get(ch) ?? 0) + 1)6 for (const ch of b) {7 const left = counts.get(ch) ?? 08 if (left === 0) return false9 counts.set(ch, left - 1)10 }11 12 return true13}Проблема
Те же буквы — то же слово: частоты символов решают за один проход.
Что вы видите
Ряд счётчиков на каждую букву: первое слово добавляет, второе вычитает; все нули в конце — анаграммы.
Как это работает
Анаграммы содержат одинаковые буквы — значит, совпадают частоты. Считаем частоты первого слова, вычитаем второго: отрицательный счётчик или остаток — не анаграммы. O(n) без сортировки.
Пошаговый разбор
- 01
Первое слово
+1 за каждую букву.
- 02
Второе слово
−1 за каждую букву.
- 03
Итог
Все нули — анаграммы.
Complexity и ограничения
Сложность см. в шапке страницы.
Edge cases
- Пустой вход
Корректная тривиальная обработка.
- Вырожденный случай
Минимум работы — сразу ответ.
Где встречается в реальности
Спелл-чекеры
Поиск опечаток-перестановок в словаре.
Настольные игры
Scrabble-ассистенты и генераторы анаграмм.
Дедупликация
Группировка текстов по буквенному составу.
Связанные алгоритмы
«Одни буквы — разные слова. Проверка за один проход»
Тот же сценарий StepSequence в вертикальной композиции — с safe zones и записью WebM ниже на странице.
Shorts 9:16
Вертикальная композиция строится той же последовательностью шагов, что и страница: safe zones отмечены пунктиром (там живёт UI платформ), биты сценария подсвечиваются по прогрессу. Кнопка записи сохраняет WebM — детерминированная StepSequence даёт воспроизводимый ролик без монтажа.