Ctrl K
Курс · шаг 22 из 79К шагуДальше

Разложить анаграммы по группам

Средняя
Дан массив строк words. Две строки считаются анаграммами, если одну можно получить из другой перестановкой букв, то есть в них одинаковые буквы в одинаковом количестве. Разбейте все строки на группы так, чтобы в каждой группе оказались строки, которые являются анаграммами друг друга, а строки из разных групп анаграммами не были. Каждый элемент массива (включая повторы) должен попасть ровно в одну группу. Верните список групп. Порядок групп и порядок строк внутри группы могут быть любыми.
Пример 1
words=['listen', 'google', 'silent', 'cat', 'enlist', 'act'] → [['listen', 'silent', 'enlist'], ['google'], ['cat', 'act']]

«listen», «silent» и «enlist» состоят из одних и тех же букв, «cat» и «act» — тоже, а у «google» пары нет и она образует группу сама по себе.

Пример 2
words=['', 'b', ''] → [['', ''], ['b']]

Две пустые строки — анаграммы друг друга, поэтому попадают в одну группу; «b» стоит отдельно.

Пример 3
words=['ab', 'ba', 'aab'] → [['ab', 'ba'], ['aab']]

«aab» содержит две буквы a, поэтому с «ab» и «ba» её не объединить.

Ограничения
  • 1 ≤ words.length ≤ 10⁴
  • 0 ≤ words[i].length ≤ 100
  • words[i] состоит только из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПодпоследовательность только одного слова СредняяСамые частые запросы СредняяСлово, выращенное по букве СредняяСклеить карточки контактов СредняяСлова, спрятанные в тексте Средняя
загружаем Python…
Вход
words=['listen', 'google', 'silent', 'cat', 'enlist', 'act']
Ожидается
[['listen', 'silent', 'enlist'], ['google'], ['cat', 'act']]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 71 тест на сервере, включая скрытые.