【问题标题】:Efficient data structure for searching "is in string" from a large set of strings从大量字符串中搜索“在字符串中”的高效数据结构
【发布时间】:2014-03-09 19:50:13
【问题描述】:

我们都知道 Google 自动完成功能。键入“an”并获得以“an”开头的可能结果,例如“animal”。你可以想象前缀树(trie)如何很好地解决这个问题。

但是如果你想匹配“在字符串中”而不是“开始于”怎么办?尝试变得低效。

一个糟糕的解决方案是:

  • 获得所有可能性循环可能性,
  • 只保留那些 inStr(possibility, token)==true

【问题讨论】:

  • 一个同时存储部分字符串的前缀树怎么样?前任。在树中添加“lorem”时,还要添加“orem”、“rem”、“em”和“m”,每个都存储对完整字符串的引用。

标签: string algorithm search autocomplete trie


【解决方案1】:

Generalized suffix tree 就是你要找的东西。

来自维基百科:

它可以在O(n)时间和空间中构建,并且可以用于在O(m+z)时间查找长度为m的字符串P的所有z出现

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    相关资源
    最近更新 更多