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

确定一组字符是否是单词的字谜的一种方法涉及使用素数。为每个字母分配一个质数,例如,a=2、b=3、c=5、d=7。现在为字典中的每个单词预先计算素数的乘积。例如,'add' = 2*7*7 = 98,或'bad' = 3*2*7 = 42。

现在可以通过计算一组字母的值来确定一组字母是否是字典中任何单词的字谜。例如,字母 'abd'= 2*3*7 = 42 = 'bad'。只需检查字母的计算值是否存在于您的预先计算的字典中。对于任何字谜,您只需要执行一次此计算,而不是尝试生成每个可能的字谜。但是请注意,此方法仅适用于相对较小的单词,否则您将遇到溢出问题并需要使用 BigInteger。

于 2010-04-24T20:11:57.840 回答
1

不,您必须使用外部库,例如JWNL,它是 WordNet 的包装器 -一个按含义组织的机器可读词汇数据库,几乎包含所有英语单词。

于 2010-04-24T17:52:12.943 回答
1

也许爵士的英语词典可以帮助你。

于 2010-04-24T17:54:06.677 回答
1

标准 Java 库中没有这样的专用类,但您可以使用您喜欢的Set接口的任何实现,并通过加载您选择的单词来初始化它,这些单词来自您可以在许多地方找到的无数单词列表中的任何一个(只需仔细检查您选择的单词列表的许可证是否与您的预期应用程序兼容,例如,它是否允许商业用途、如果您需要的话,可以使用封闭源代码的应用程序等等)。

于 2010-04-24T17:54:52.937 回答