Frage

kann ich herausfinden, wie Anagramme einer Zeichenfolge erstellen, aber ich weiß nicht, wie ich sie in ein Wörterbuch von realen Worten vergleichen zu überprüfen, ob das Anagramm ein echtes Wort ist. Gibt es eine Klasse in dem Java-API, die den gesamten Englisch-Wörterbuch enthält?

War es hilfreich?

Lösung

Nein, aber Sie können eine Wortliste erhalten von verschiedene Orte . Von dort können Sie die Wortliste-Datei in eine Liste lesen:

List<String> lines = new ArrayList<String>();
BufferedReader in = new BufferedReader(new FileReader("wordlist.txt"));
String line = null;
while (null!=(line=in.readLine()))
{
   lines.add(line);
}
in.close();

Und schließlich binäre Suche Verwendung lines.contains() für Ihr Kandidatenwort.

Andere Tipps

Eine Methode, ob ein Satz von Zeichen zu bestimmen, ist ein Anagramm eines Wortes Primzahlen beinhaltet die Verwendung. Ordnen Sie jeden Buchstaben eine Primzahl ist, beispielsweise a = 2, b = 3, c = 5, d = 7. Nun precompute das Produkt von Primzahlen für jedes Wort in Ihrem Wörterbuch. Zum Beispiel 'add' = 2 * 7 * 7 = 98, oder 'schlecht' = 3 * 2 * 7 = 42

Bestimmung Nun, wenn ein Satz von Buchstaben ein Anagramm von jedem Wort in einem Wörterbuch ist, kann durch Berechnung des Wertes des Satzes von Buchstaben erfolgen. Zum Beispiel der Buchstaben 'abd' = 2 * 3 * 7 = 42 = 'schlecht'. Genau prüfen, ob der berechnete Wert für die Buchstaben in Ihrem vorberechneten Wörterbuch vorhanden ist. Für jedes Anagramm, müssen Sie diese Berechnung nur tun, wenn im Vergleich zu versuchen, jedes mögliche Anagramm zu erzeugen. Hinweis jedoch diese Methode nur dann gut funktionieren für relativ kleine Worte, sonst werden Sie in Überlaufprobleme und müssen laufen BigInteger verwenden.

Nein, müssen Sie eine externe Bibliothek verwenden, wie zum Beispiel JWNL , die ein Wrapper für WordNet -. eine maschinenlesbare lexikalische Datenbank von Bedeutungen organisiert , der so ziemlich jedes englisches Wort enthält

Vielleicht ist das Englisch-Wörterbuch in jazzy Ihnen helfen können.

Es gibt keine solche spezialisierten Klassen in der Standard-Java-Bibliothek, aber Sie können jede Implementierung Sie wie die Set Schnittstelle und initialisieren sie es durch das Laden mit Wörtern Ihrer Wahl auf, aus einem der unzähligen Wortlisten sorgfältig in vielen Orten (nur überprüfen herausfinden kann, dass die Lizenz für die Wortliste, die Sie wählen, um mit Ihrer beabsichtigten Anwendung kompatibel ist, zum Beispiel, ist es erlaubt kommerzielle Nutzung, geschlossen -source apps wenn das, was Sie benötigen, und so weiter).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top