Сгруппируйте все анаграммы
Постановка задачи: Вам дан набор из k строк, каждая длина n. Вы должны вывести группу анаграмм вместе. Анаграммы подобны, например, atm - mat, like-kile.
1 ответ
Решение
Просто отсортируйте буквы слова, чтобы получить подпись, специфичную для анаграммы. Например, в Python,
sig = ''.join(sorted(word))
и сделать dict
с sig
в качестве ключа и значения, являющегося списком слов с этой подписью (defaultdict(list)
хорошо работает для этого). Конечно, вы можете сделать это на любом языке с возможностями сортировки и ассоциативными массивами, значениями которых могут быть списки или векторы;-).