Finden von Anagrammen für ein bestimmtes Wort

Zwei Wörter sind Anagramme, wenn eines von ihnen genau die gleichen Zeichen wie das andere Wort hat.

Beispiel:Anagram & Nagaram sind Anagramme (ohne Berücksichtigung der Groß- / Kleinschreibung).

Nun gibt es viele ähnliche Fragen. Ein paar Ansätze, um herauszufinden, ob zwei Zeichenfolgen Anagramme sind, sind:

1) Sort die Saiten und vergleichen Sie sie.

2) Ein ... kreierenfrequency map für diese Zeichenfolgen und prüfen Sie, ob sie gleich sind oder nicht.

Aber in diesem Fall wird uns ein Wort gegeben (der Einfachheit halber nehmen wir nur ein einziges Wort an und es wird nur ein einziges Wort Anagramme geben) und wir müssen dafür Anagramme finden.

Die Lösung, an die ich denke, ist, dass wir es könnengeneriere alle Permutationen für das Wort und überprüfen Sie, welches dieser Wörterexistieren im Wörterbuch . Dies ist jedoch sehr ineffizient. Ja, das Wörterbuch ist auch verfügbar.

Welche Alternativen haben wir hier?

Ich habe auch in einem ähnlichen Thread gelesen, dass mit etwas getan werden kannTries Aber die Person hat nicht erklärt, was der Algorithmus ist und warum wir zuerst einen Trie verwendet haben, sondern nur eine Implementierung, die auch in Python oder Ruby bereitgestellt wurde. Das war also nicht wirklich hilfreich, weshalb ich diesen neuen Thread erstellt habe. Wenn jemand seine Implementierung (anders als C, C ++ oder Java) teilen möchte, erklären Sie es bitte auch.

Antworten auf die Frage(12)

Ihre Antwort auf die Frage