后缀数组,一种处理字符串的有力工具。
后缀:假设字符串的长度为n,那么后缀 i 表示 从 i 到 n 这一段字符串。ababa:后缀 3 为 aba。
后缀数组就是对字符串的所有后缀排序。
很显然,我们可以通过快速排序在的时间复杂度内对 n 个后缀进行排序,但是字符串之间的比较不是的,而是的,所以整体时间复杂度为。
Manber和Myers发明的倍增算法,它的时间复杂度为。
下面详细介绍一下这个倍增算法。
我们有一个aabaaaab的字符串,现在要对这个字符串的后缀排序。我们先看一下过程图。
1:对每个后缀的第一个字符排序,