Дан массив слов, сгруппируйте анаграммы IP:{tar,rat,banana,atr} OP:{[tar,rat,atr],[banana]}
Одно из решений этого вопроса с использованием Hash Table. рассмотрите каждое слово, отсортируйте его и добавьте в качестве ключа в хеш-таблицу, если оно отсутствует. Значением ключа будет список всех анаграмм с одним и тем же ключом. Я хотел узнать о временных сложностях. Чтобы отсортировать символы в массиве, предположите, что O (n log n). Чтобы сохранить в хэш-таблице, это будет O (n), всего O (n * nlogn).
Есть ли лучший алгоритм? с меньшей временной сложностью?
n
— это длина слова, а не количество слов в вашем массиве, так что это не должно быть слишком плохо. Тем не менее, вы можете определить свою собственную хэш-функцию, независимую от перестановок. Например, сложим буквенные значения: tar -> 20+1+18=39. Но это может быть не очень хороший хэш. - person Teepeemm   schedule 30.07.2013