形式陈述
字符串
直觉
任意子串都是某个后缀的前缀。后缀按字典序排列后,拥有共同前缀的后缀聚成连续区间,于是子串问题转为有序数组和区间问题。
例子与边界
对附加唯一终止符的 banana,对应的 ana 型后缀与 anana 型后缀相邻且 LCP 为 3。终止符小于其他字符且只出现一次,可统一前缀比较约定,但并非所有实现必需。朴素二分每次比较模式可能花
推论与应用
后缀数组用于全文索引、重复子串、最长公共子串、压缩和生物序列分析,相比后缀树更紧凑且缓存友好。
参考资料
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to Algorithms, 4th ed., MIT Press, 2022,Parts I–VI。
- Dan Gusfield, Algorithms on Strings, Trees, and Sequences, Cambridge University Press, 1997,Chs. 1–8。