问题描述
我有一个包含几千个单词的数组。 我的网页上有一个输入字段,允许用户输入几个字母,然后点击搜索。 当用户点击搜索时,应用程序应查看字典并查看可以从提供的字母形成的单词。 每个字母只能使用一次(如拼字游戏)。
是否已经有一个搜索库来做这样的事情? 如果没有必要,我不想重新发明轮子。 如果没有,有没有人有高性能解决方案的想法。 我想这之前已经完成了数百万次。
1楼
jQuery成名的John Resig也在考虑这个问题:
2楼
你需要做的是转换哈希表中的单词数组,其中键是每个单词的字母排序。 例如:
['car', 'shoe', 'train']
=> {'acr': ['car'],
'ehos': ['shoe'],
'ainrt': ['train']}
然后你拿用户的字母,你对它们进行排序,然后你做一个哈希表(任何字典impl会做,但哈希表在这种情况下是最有效的)查找使用排序的字母作为键。 与您的密钥对应的列表是您可以对这些字母执行的单词列表。 这具有O(n)= 1的时间复杂度的优点。
3楼
Steve Hanov也对此有所描述: