4

文字列のアナグラムを作成する方法を考え出すことはできますが、それらを実際の単語の辞書と比較して、アナグラムが実際の単語であるかどうかを確認する方法がわかりません。英語辞書全体を含む Java API のクラスはありますか?

4

5 に答える 5

5

いいえ、しかし、単語リストはさまざまな場所から入手できます。そこから、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()

于 2010-04-24T17:54:53.113 に答える
2

文字のセットが単語のアナグラムであるかどうかを判断する方法の 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 を使用する必要があります。

于 2010-04-24T20:11:57.840 に答える
1

いいえ、 JWNLなどの外部ライブラリを使用する必要があります。これは WordNet のラッパーです。これは、意味ごとに編成された機械可読語彙データベースであり、ほぼすべての英語の単語が含まれています。

于 2010-04-24T17:52:12.943 に答える
1

Jazzyの英語辞書が役立つかもしれません。

于 2010-04-24T17:54:06.677 に答える
1

標準 Java ライブラリにはそのような特殊なクラスはありませんが、Setインターフェースの好きな実装を使用し、多くの場所で見つけることができる無数の単語リストから選択した選択した単語をロードして初期化することができます。 (選択した単語リストのライセンスが目的のアプリケーションと互換性があることを注意深く確認してください。たとえば、商用利用や、必要な場合はクローズドソースのアプリが許可されているかどうかなど)。

于 2010-04-24T17:54:52.937 に答える