3

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

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

4

3 回答 3

1

史蒂夫哈诺夫也写了一些关于这个的东西:

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

于 2011-03-28T21:38:23.397 回答
1

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

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

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

于 2011-03-28T21:36:11.237 回答
1

jQuery 成名的 John Resig 也一直在思考这个问题:

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

于 2011-03-28T21:23:08.200 回答