后缀数组算法介绍

简介: 后缀数组学习

1.后缀:后缀指的是从字符串的某个位置i到字符串末尾的子串,我们定义以s的第i个字符为第一个元素的后缀为suff(i)。
2.后缀数组sa[i]表示排名为i的后缀的起始位置的下标。
3.ran(i)表示起始位置的下标为i的后缀排名。
4.LCP(i,j)表示suff(sa[i])与suff(sa[j])的最长公共前缀。 则有下面的公式:
LCP(i,j)=LCP(j,i)
LCP(i,i)=len(sa[i])=n-sa[i]+1;
5.Hight[i]表示后缀子串排好序之后,排序为i与i-1的最长公共前缀是多少LCP(i,i-1)。具体的Hight[i]如下图:
image.png

相关文章
|
7月前
|
算法
算法思想总结:前缀和算法
算法思想总结:前缀和算法
|
7月前
|
算法 NoSQL 容器
Rabin-Karp字符串哈希算法
Rabin-Karp字符串哈希算法
|
7月前
|
算法
【算法总结】字符串哈希
【算法总结】字符串哈希
105 0
|
算法
Manachar算法(马拉车算法):快速求取最长回文子串
求取最长回文子串的长度的最佳方法为 Manachar算法 ,俗称马拉车算法。常见的方法就是中心扩散法,但时间复杂度较高。
95 0
Manachar算法(马拉车算法):快速求取最长回文子串
|
算法
算法:next数组的求法详解
算法:next数组的求法详解
863 0
算法:next数组的求法详解
|
存储 算法 BI
KMP算法(kmp) next数组算法解析
KMP算法(kmp) next数组算法解析
149 0
KMP算法(kmp) next数组算法解析
|
算法
【算法】KMP算法
【算法】KMP算法
【算法】KMP算法
|
机器学习/深度学习 存储 容器
1044. 最长重复子串 :「字符串哈希 + 二分」&「后缀数组」
1044. 最长重复子串 :「字符串哈希 + 二分」&「后缀数组」
|
算法
leetcode算法14.最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。
115 0
leetcode算法14.最长公共前缀
|
算法 网络协议
[解题报告](第23讲) 字符串算法(三) - 字符串分割
[解题报告](第23讲) 字符串算法(三) - 字符串分割
[解题报告](第23讲) 字符串算法(三) - 字符串分割