后缀数组(suffix array)模板(2)

强大的height数组的计算

void get_height() {
    int i, j, k = 0 ;
    for ( i = 1 ; i <= n ; i ++ ) rnk[sa[i]] = i ;
    for ( i = 1 ; i <= n ; i ++ ) {
        if (k) k -- ;
        j = sa[rnk[i]-1] ;
        while ( s[i+k] && s[i+k]==s[j+k] ) ++ k ;
        height[rnk[i]] = k ;
    }
}
点赞