JavaScript算法匹配字典中的单词

时间:2011-03-28 21:19:53

标签: javascript algorithm full-text-search anagram

我有一个包含几千个单词的数组。我的网页上有一个输入字段,允许用户输入几个字母,然后点击搜索。当用户点击搜索时,应用程序应查看字典并查看可以从提供的字母形成的单词。每个字母只能使用一次(如拼字游戏)。

是否已经有一个搜索库来做这样的事情?如果没有必要,我不想重新发明轮子。如果没有,有没有人有高性能解决方案的想法。我想这之前已经完成了数百万次。

3 个答案:

答案 0 :(得分:1)

jQuery成名的John Resig也在考虑这个问题:

http://ejohn.org/blog/dictionary-lookups-in-javascript/

答案 1 :(得分:1)

你需要做的是转换哈希表中的单词数组,其中键是每个单词的字母排序。例如:

['car', 'shoe', 'train']
=> {'acr': ['car'],
     'ehos': ['shoe'],
     'ainrt': ['train']}

然后你拿用户的字母,你对它们进行排序,你做一个哈希表(任何字典impl会做,但哈希表在这种情况下是最有效的)查找使用排序的字母作为键。与您的密钥对应的列表是您可以对这些字母执行的单词列表。这具有时间复杂度为O(n)= 1的优点。

答案 2 :(得分:1)

Steve Hanov也写了一些关于此的事情:

http://stevehanov.ca/blog/index.php?id=120