Учитывая массив слов, сгруппировать анаграммы IP: {деготь, крыса, банан, ATR} ОП: {[деготь, крыса, ртд], [банан]}Группировка анаграммы
Одним из решений этого вопроса используя таблицу хешей. рассмотрите каждое слово, сортируйте его и добавьте в качестве ключа в хеш-таблицу, если нет. Значение для ключа было бы списком всех анаграмм с одним и тем же ключом. Я хотел знать о временных сложностях. Чтобы отсортировать символы в массиве, предположим, что O (n log n). Для хранения в хеш-таблице это будет O (n), всего O (n * nlogn).
Есть ли лучший алгоритм? с меньшей сложностью времени?
Но 'n' - это длина слова, а не количество слов в вашем массиве, поэтому это не должно быть слишком плохо. Независимо от этого, вы можете определить свою собственную хеш-функцию, которая не зависит от перестроек. Например, добавьте значения букв: tar -> 20 + 1 + 18 = 39. Но это может быть не очень хороший хеш. – Teepeemm
Я не вижу отношения между этим вопросом и дураком. См. [Здесь] (http://stackoverflow.com/a/18144931/2417578) для хэша-агностика заказа. В тестовом приложении я написал сбрасываемые хэши и слова, и я решил, что хэш объединяет анаграммы вместе, что похоже на то, как вы направляетесь. – sh1