后缀数组学习笔记 ------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]\)

posted @ 2021-02-14 17:02  EchoZQN  阅读(56)  评论(0)    收藏  举报