用于从大量字符串中搜索“在字符串中”的高效数据结构

时间:2014-02-11 20:01:00

标签: string algorithm search autocomplete trie

我们都知道Google自动填充功能。输入“an”并获得以“an”开头的可能结果,例如“animal”。您可以设想前缀树(trie)如何能够很好地工作。

但是,如果你想匹配“is in string”而不是“以...开头”。特里效率低下。

一个可怕的解决方案是:

  • 获取所有可能性循环可能性,
  • 仅保留 inStr(可能性,令牌)== true
  • 的那些

1 个答案:

答案 0 :(得分:1)

Generalized suffix tree正是您要找的。

来自维基百科:

  

它可以在O(n)时间和空间内构建,可用于查找zP长度m的所有O(m+z)次出现时间