【问题标题】:Fast prefix search with ordered dictionary使用有序字典进行快速前缀搜索
【发布时间】:2019-08-09 03:49:45
【问题描述】:

给定一个字符串字典D和一个输入字符串S。我试图从 D 中找到某个字符串 p,它是 S 的前缀。

对于无序字典,最快的方法似乎是为 D 构建一个 trie 并与 S 的初始字符一起遍历该 trie。由于 D 中的字符串是无序的,因此这里最自然的搜索算法将是找到最长前缀 p 的算法。

但是,我需要为 D 中的字符串保留一个特殊的输入顺序。例如,对于 D = [bar, foo, foobar] 和 S = foobariously,上述搜索将产生 p = foobar,因为它是最长的前缀。但是我想得到 p = foo,因为 foo 出现在输入列表的前面。

这种前缀搜索最快的算法是什么?我认为基本方法仍然涉及 trie,但我不知道如何将原始排序集成到其中。

【问题讨论】:

    标签: algorithm prefix-tree


    【解决方案1】:

    只需构建一个 trie,但在添加元素时,如果您在途中发现一个已经存在,请放弃它,因为那个更好。

    也就是说,当尝试添加 'foobar' 时,你会遍历 trie 到 'foo' 并意识到你永远不会想要 'foobar' 所以放弃它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-01
      • 2021-09-26
      • 2017-11-11
      • 1970-01-01
      • 1970-01-01
      • 2011-11-07
      相关资源
      最近更新 更多