Javaアナグラムソルバー
-
01-10-2019 - |
質問
文字列のアナグラムを作成する方法を解決することはできますが、実際の単語が実際の単語であるかどうかを確認するために、実際の単語の辞書と比較する方法がわかりません。 Java APIに、英語辞書全体を含むクラスはありますか?
解決
いいえ、ただし、WordListを取得できます さまざまな場所. 。そこから、WordListファイルをリストに読み取ることができます。
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();
そして最後に バイナリ検索 使用する lines.contains()
あなたの候補者の言葉のために。
他のヒント
文字のセットが単語のアナグラムであるかどうかを判断する1つの方法には、素数の使用が含まれます。各文字をプライム番号、たとえばa = 2、b = 3、c = 5、d = 7に割り当てます。次に、辞書の各単語のプライムの製品を事前に計算します。たとえば、 'add' = 2*7*7 = 98、または 'bad' = 3*2*7 = 42。
ここで、文字のセットが辞書の任意の単語のアナグラムであるかどうかを判断することは、文字のセットの値を計算することで実行できます。たとえば、文字「abd」= 2*3*7 = 42 = 'bad'。事前計算された辞書に文字の計算値が存在するかどうかを確認してください。すべてのアナグラムについては、可能なすべてのアナグラムを生成しようとするのに対して、この計算を1回だけ行う必要があります。ただし、この方法は比較的小さな単語でのみうまく機能します。そうしないと、オーバーフローの問題に遭遇し、Bigintegerを使用する必要があります。
いいえ、外部ライブラリを使用する必要があります。 jwnl, 、WordNetのラッパーです - 意味によって整理された機械読み取り可能な語彙データベース, 、それにはほとんどすべての英語の言葉が含まれています。
たぶん英語辞書 ジャジー あなたを助けられる。