Wenn zwei Wörter oder Ausdrücke Anagramme sind , teilen sie sich die exakt gleiche Menge von Buchstaben in einer anderen Reihenfolge . Zum Beispiel, " hören " und " silent" sind Anagramme . Sie können einen Algorithmus mit Ordnung n log (n) , die Effizienz zu sehen, ob eine Liste von Wörtern gegeben sind Anagramme prüft erstellen. Sortieren Sie dann mit einem O ( n log (n) ) sortieren Methode und verwenden Sie eine Hash-Tabelle , um die Ergebnisse zu vergleichen. Anleitung
1
erstellen Hash-Tabelle , die einen Schlüssel und eine Liste von Werten mit jeder Taste zugeordnet ist. Beginnend mit dem ersten Wort, durchlaufen die Liste der Wörter
2
sortieren Buchstaben im Wort mit merge sort , heap sort , binären Baum sortieren oder eine vergleichbare Art , die als O (n log läuft . ( n)). Beachten Sie, dass Anagramme sind identisch, wenn sortiert.
3
Suchen Sie die sortiert Wort in der Hash-Tabelle . Fügen Sie den unsortierten Wort zu den Werten , die an der Raute-Taste , wenn der Schlüssel bereits vorhanden. In der sortierten Wort als neue Raute-Taste und dem unsortierten Wort als Wert an der Raute-Taste , wenn die Hash- Schlüssel nicht vorhanden ist . Beispiel: Für die " Ratte ", " tar " und " Technik " add " art ", wie die Raute-Taste und " Ratte " als Wert , fügen "tar " als Wert " an "Kunst" und fügen Sie " Kunst" als Wert an " Kunst".
4
mit jedem Wort in der Liste weiter . Wenn Sie das Ende der Liste erreicht , drucken Sie jede Raute-Taste und die damit verbundenen Werte , die Anagramme gefunden anzuzeigen.
5
Zählen Sie die Vergleiche zu bestätigen, dass die Art in " O (n log geschieht ( n ) ) " und dass der Vergleich geschieht in O (1) .