单词匹配算法

时间:2014-02-20 18:13:58

标签: java algorithm

我的主要想法是找到一个算法(Java),它取一个人在JoptionPane中输入的随机字母,然后立即按“查找单词”我希望程序派生出与我匹配的所有单词存储在.txt文件中的字典中的字母。

我正在努力寻找这种算法。

例如:

考虑到我们在Scrabble比赛中得到以下字母:

a,o,p,t,e,z,e,w

我想找到一个java代码或至少一个算法,以便从英文字典.txt文件中找到所有具有这些字母但没有其他字母的单词。如果我输入“a,p,p”,我希望得到“app”这个词而不是(app“s”)。 所以...总而言之,我如何比较存储在.txt文件中的单词中的这些字母,从而获得在给定字母中匹配的特定单词?

2 个答案:

答案 0 :(得分:3)

根据您的效率,有不同的方法可以做到这一点。

一种简单但效率较低的方法是,获取字符串并遍历整个字典文件,检查每行是否满足要求:检查输入的每个字符是否存在于dict文件中 - line(制作它的临时副本并从中删除字符,以便每个可用的字母只能使用一次)。

更难但有效的方法是将字典文件预处理为Trie(前缀树)[wikipedia]。然后,您可以通过Trie使用输入字符串的所有排列作为路线图。

编辑:注意 Marko Topolnik 指出计算输入字符串的所有排列都很昂贵 - 所以为了避免这种情况:在每一步你只检查输入中仍有哪些字母可用-string AND只保留那些可用作Trie中的下一个分支的那些。

答案 1 :(得分:1)

这可以通过以下方式完成: -

1.首先检查确切的单词是否在字典中。如果存在,则可以将它们存储在数组或列表中,并显示它。例如: -
通过在JOptionPane中键入“app”,它将显示苹果或应用程序以及更多相关单词 2.如果错误意味着不匹配字典中的任何单词,则应用edit distance