本文目录#
后缀数组简介#
后缀数组(Suffix Array)排序字符串的所有后缀。配合 LCP(Longest Common Prefix)数组,可在 O(n log n) 内完成子串查询、重复子串、字典序比较等任务。
构建算法#
- 倍增算法:每轮按 2^k 长度排序,复杂度 O(n log n);
- SA-IS:线性算法,复杂但常用库已实现。
1 | class SuffixArray { |
应用#
- 最长重复子串:
max(lcp)
; - 子串出现次数:利用 LCP + RMQ;
- 在线匹配:二分 SA + LCP;
- 与后缀自动机互补。
自检清单#
- 是否处理排序比较的稳定性与数组越界?
- 是否使用高效排序(如 radix sort)避免 O(n log^2 n)?
- 是否结合 RMQ 计算 LCP 区间?
参考资料#
- CP-Algorithms Suffix Array:https://cp-algorithms.com/string/suffix-array.html
- Competitive Programming 4 字符串章节
- MIT OCW 字符串算法课程
本作品系原创,采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,转载请注明出处。