我正在尝试解决“找到一组字母的所有可能的单词”问题。那里有一些很好的答案,但我仍然无法弄清楚。
在我的第一次测试中,我将整个字典放在一个数组中,然后循环遍历每个字母。这是非常快的,但是在数组中加载字典需要永远,并且需要大量的内存。
所以我需要存储字典(750,000)字母是一个sql数据库。
我想有两种解决方案可以找到所有可能的单词:
问题?: 它必须超级快。 iPhone 4需要能够在5-6秒内获得所有可能的单词,因此它不会妨碍游戏。
以下是类似的问题: IOS: Sqlite. Find record fast
Sulthans的回答似乎是一个好主意。创建一个哈希表,然后:
ASCII字母的位掩码(忽略任何非ASCII字母)。位于 位置0表示单词包含“a”,位置1表示“b” 如果我们为字母创建相同的位掩码,我们可以选择 诸如(wordMask& ~letterMask)== 0
之类的单词
如何制作位掩码,哈希表以及如何构造sql查询?
由于
答案 0 :(得分:2)
sql可能不是最佳选择。用于存储单词集合的传统数据结构称为Trie。我相信你可以找到那里的实施。别人会有答案。
我设想的算法是对你给出的字母进行置换,并检查每个排列以查看它是否在Trie中。