Для массива строк , вернуть все группы строк, которые являются анаграммами.

По заданному строковому массиву , верните все группы строк, которые являются анаграммами.

Мои решения:

Для каждого строкового слова в массиве отсортируйте его O (m lg m), m - средняя длина слова.

Создайте хэш-таблицу <строка, список>.

Поместите отсортированное слово в хеш-таблицу в качестве ключа, а также сгенерируйте все перестановки (O (m!)) Слова, найдите каждую перестановку в словаре (карта дерева префиксов) с помощью O (m), если это в словаре поместите (O (1)) его в хеш-таблицу, чтобы все перестановочные слова помещались в список с одним и тем же ключом.

Всего O (n * m * lg m * m!) Времени и O (n * m!) Пространства, n - размер данного массива.

Если m очень велико, это неэффективно, m! .

Есть ли лучшие решения?

спасибо

6
задан Daniel A. White 16 December 2011 в 19:07
поделиться