后缀数组学习笔记 ------height 数组的应用
\(height\) 数组的应用
-
求两个子串的最长公共前缀
引理:\(lcp(sa[i],sa[j]) = min(height[i+1...j])\)
可用 \(RMQ\) 求解
-
比较一个字符串的 两个子串的大小关系
\(A= S[a...b]\) 和 \(B = S[c...d]\)
如果 \(lcp(a,c)>=min(A,B)\) ,那么 \(|A|<|B|\) 则 \(A<B\)
否则,如果 \(rk[a]<rk[b]\) ,则 \(A<B\)
-
计算不同子串的数量
\(ans = \frac{n*(n+1)}{2} - \sum_{i=2}^n height[i]\)

浙公网安备 33010602011771号