【发布时间】:2020-03-21 04:08:06
【问题描述】:
给定一个总字数在 100,000-500,000 之间的单词词典,查找模式/掩码的最快方法是什么?其中 '-' 是一个未知字母,即 s--t- 将返回 salts、salty、scats、scots 等...
目前使用的 trie 非常适合填充了首字母的单词,但是当存在诸如 ---st 或 -tr- 之类的模式时,trie 的好处就完全丧失了。
我正在搜索的单词基本上是均匀分布的,其中第一个字母被填满,而那些没有。
将单词加载到 SQL 数据库然后使用 SQL 通配符搜索功能是否有意义?或者我只是手动搜索每个可能的字母组合以查找空白字母的哈希图呢?
如果您能提供任何见解,我们将不胜感激。
【问题讨论】:
-
我想你可以用倒序的每个单词的字母来镜像字典。
-
这是一个好主意,但是在任何一方都没有前导字母的查找(我应该提到这一点)。我现在将尝试实现镜像,这肯定会节省一些时间
-
分析节省的时间是个好主意。有时,即使有最好的逻辑,这样的事情也很少或根本没有用。我认为 SQL 会是更好的选择。
-
我能想到的加快搜索速度的唯一方法是先检查字典中单词的长度,然后比较字母。否则,您必须浏览整个字典。
标签: java string performance lookup trie