0

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

在我的第一个测试中,我将整个字典放在一个数组中,然后遍历每个字母。这是超快的,但是将字典加载到数组中需要很长时间,并且需要大量内存。

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

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

  1. 进行预先查询,返回所有可能的单词
  2. 做一个简单的查询,返回数据库中可能出现的单词的一部分,然后快速遍历该数组并验证单词。

问题?: 它必须超级快。iPhone 4 需要能够在 5-6 秒内获得所有可能的单词,这样才不会妨碍游戏。

这是一个类似的问题: IOS:Sqlite。快速查找记录

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

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

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

谢谢

4

1 回答 1

2

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

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

于 2013-03-13T17:05:58.230 回答