質問

文字列のアナグラムを作成する方法を解決することはできますが、実際の単語が実際の単語であるかどうかを確認するために、実際の単語の辞書と比較する方法がわかりません。 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のラッパーです - 意味によって整理された機械読み取り可能な語彙データベース, 、それにはほとんどすべての英語の言葉が含まれています。

たぶん英語辞書 ジャジー あなたを助けられる。

標準のJavaライブラリにはそのような専門クラスはありませんが、好きな実装を使用できます セットする インターフェイスと初期化あなたの選択の言葉でそれをロードして、それを無数のいずれかから選んだものから選んだ 単語リスト 多くの場所で見つけることができます(選択した単語リストのライセンスが意図したアプリケーションと互換性があることを注意深くチェックしてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top