后缀数组和后缀自动机模板
原文:https://oi-wiki.org/string/sa/
后缀数组
下面说的都是倍增法实现。
字符串下标都从 1 开始。
算法作用:
在的时间复杂下实现
后缀数组有两个关键的数组:
-
sa[i]表示将所有后缀排序后第 i 小的后缀的编号
-
height[i] 表示 sa[i]和 sa[i−1]的最长公共前缀(的长度)。
height[1]是0
算法作用:
-
不同子串的数目
-
两子串最长公共前缀
-
从字符串首尾取字符最小化字典序
-
出现至少 k 次的子串的最大长度
-
是否有某字符串在文本串中至少不重叠地出现了两次
-
求一个串最多由哪个串复制若干次得到
-
重复次数最多的重复子串
后缀自动机 (SAM)
时间复杂度:
空间复杂度:
算法作用:
-
给一个文本串 T 和多个模式串 P,我们要检查字符串 P 是否作为 T 的一个子串出现
-
计算给定的字符串中有多少个不同的子串。
-
给定一个字符串 ,计算所有不同子串的总长度。
-
给定一个字符串S 。多组询问,每组询问给定一个数K ,查询 S的所有子串中字典序第 K 大的子串。
-
对于一个给定的文本串 S,有多组询问,每组询问给一个模式串 P,回答模式串 P在字符串 T 中作为子串
-
- T出现了多少次
-
- T出现的所有位置。
-
给定一个字符串 S 和一个特定的字符集,我们要找一个长度最短的没有在S 中出现过的字符串。
-
多个字符串间的最长公共子串
本文作者:kingwzun
本文链接:https://www.cnblogs.com/kingwz/p/16572541.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步