单词的SQL哈希表

时间:2013-03-13 16:13:30

标签: c++ ios objective-c sql c

我正在尝试解决“找到一组字母的所有可能的单词”问题。那里有一些很好的答案,但我仍然无法弄清楚。

在我的第一次测试中,我将整个字典放在一个数组中,然后循环遍历每个字母。这是非常快的,但是在数组中加载字典需要永远,并且需要大量的内存。

所以我需要存储字典(750,000)字母是一个sql数据库。

我想有两种解决方案可以找到所有可能的单词:

  1. 创建一个返回所有可能单词的高级查询
  2. 创建一个简单的查询,使用可能的单词返回数据库的一小部分,然后快速循环遍历该数组并对单词进行验证。
  3. 问题?: 它必须超级快。 iPhone 4需要能够在5-6秒内获得所有可能的单词,因此它不会妨碍游戏。

    以下是类似的问题: IOS: Sqlite. Find record fast

    Sulthans的回答似乎是一个好主意。创建一个哈希表,然后:

      

    ASCII字母的位掩码(忽略任何非ASCII字母)。位于   位置0表示单词包含“a”,位置1表示“b”   如果我们为字母创建相同的位掩码,我们可以选择   诸如(wordMask& ~letterMask)== 0

    之类的单词

    如何制作位掩码,哈希表以及如何构造sql查询?

    由于

1 个答案:

答案 0 :(得分:2)

sql可能不是最佳选择。用于存储单词集合的传统数据结构称为Trie。我相信你可以找到那里的实施。别人会有答案。

我设想的算法是对你给出的字母进行置换,并检查每个排列以查看它是否在Trie中。