algorithm - 如何使用后缀树算法查找大字符串中子字符串的位置?

标签 algorithm suffix-tree

我从另一个堆栈溢出帖子中学习了如何实现后缀树。我只能知道子串是否存在。我想知道是否有一种方法可以使用后缀树找到子模式在字符串中的位置。

最佳答案

是的!后缀树叶通常用给定后缀开始的索引进行注释。因此,您可以通过为 T 构建后缀树,搜索 P,然后从搜索结束的节点开始执行 DFS,从而找到字符串 T 中所有出现的字符串 P。以这种方式找到的每一片叶子对应于字符串 P 出现的一个索引。另外,它运行得非常快:运行时间为 O(|P| + k),其中 k 是匹配项的数量。

关于algorithm - 如何使用后缀树算法查找大字符串中子字符串的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32217588/

相关文章:

algorithm - 打印所有对 n 个整数求和的方法,使它们的总和达到给定的总和。

algorithm - 一种算法——后缀树

string - 最长回文子串和后缀 trie

c++ - 迭代方法似乎比递归实现(硬币找零)慢

algorithm - 使用后缀数组查找两个输入字符串的一组重复的、不重叠的子字符串

python - 为 Python 查找最长重复字符串的有效方法(来自 Programming Pearls)

algorithm - token 后缀树教程

c# - C#的字典序排序算法

algorithm - 排列数字以形成最大数 - 算法证明

algorithm - 使用递归关系分析时间复杂度