我正在尝试解决“为一组字母查找所有可能的单词”问题。那里有一些很好的答案,但我仍然无法弄清楚。
在我的第一个测试中,我将整个字典放在一个数组中,然后遍历每个字母。这是超快的,但是将字典加载到数组中需要很长时间,并且需要大量内存。
所以我需要存储字典(750,000)字母是一个sql数据库。
我想有两种解决方案可以找到所有可能的单词:
- 进行预先查询,返回所有可能的单词
- 做一个简单的查询,返回数据库中可能出现的单词的一部分,然后快速遍历该数组并验证单词。
问题?: 它必须超级快。iPhone 4 需要能够在 5-6 秒内获得所有可能的单词,这样才不会妨碍游戏。
这是一个类似的问题: IOS:Sqlite。快速查找记录
Sulthans 的回答似乎是个好主意。创建一个哈希表,然后:
ASCII 字母的位掩码(忽略任何非 ASCII 字母)。位置 0 的位表示单词包含“a”,位置 1 包含“b”等。如果我们为字母创建相同的位掩码,我们可以选择诸如 (wordMask & ~lettersMask) == 0 这样的单词
位掩码、哈希表如何制作,sql查询如何构造?
谢谢