Сгруппируйте все анаграммы

Постановка задачи: Вам дан набор из k строк, каждая длина n. Вы должны вывести группу анаграмм вместе. Анаграммы подобны, например, atm - mat, like-kile.

1 ответ

Решение

Просто отсортируйте буквы слова, чтобы получить подпись, специфичную для анаграммы. Например, в Python,

sig = ''.join(sorted(word))

и сделать dict с sig в качестве ключа и значения, являющегося списком слов с этой подписью (defaultdict(list) хорошо работает для этого). Конечно, вы можете сделать это на любом языке с возможностями сортировки и ассоциативными массивами, значениями которых могут быть списки или векторы;-).

Другие вопросы по тегам