Учитывая массив строк, вернуть все группы строк, которые являются анаграммами.
Мои решения:
Для каждого строкового слова в массиве отсортируйте его O(m lg m), m — средняя длина слова.
Создайте хеш-таблицу ‹ строка, список >.
Поместите отсортированное слово в хэш-таблицу в качестве ключа, а также сгенерируйте все перестановки (O (m!)) слова, ищите каждую перестановку в словаре (карте дерева префиксов) с O (m), если она есть в словаре , поместите (O(1)) его в хеш-таблицу так, чтобы все переставленные слова попали в список с одним и тем же ключом.
Итого, O(n * m * lg m * m!) времени и O(n* m!) пространства, n - размер данного массива.
Если m очень велико, это неэффективно, m! .
Любые лучшие решения?
Благодарность