后缀数组算法介绍

简介: 后缀数组学习

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

相关文章
|
3月前
|
算法 测试技术 C++
【KMP】【二分查找】【C++算法】100207. 找出数组中的美丽下标 II
【KMP】【二分查找】【C++算法】100207. 找出数组中的美丽下标 II
|
3月前
|
算法
KMP 算法小结
KMP 算法小结
22 0
|
3月前
|
算法 NoSQL 容器
Rabin-Karp字符串哈希算法
Rabin-Karp字符串哈希算法
|
3月前
|
算法
【算法总结】字符串哈希
【算法总结】字符串哈希
64 0
|
算法
Manachar算法(马拉车算法):快速求取最长回文子串
求取最长回文子串的长度的最佳方法为 Manachar算法 ,俗称马拉车算法。常见的方法就是中心扩散法,但时间复杂度较高。
83 0
Manachar算法(马拉车算法):快速求取最长回文子串
字符串哈希
原题链接841. 字符串哈希 - AcWing题库 视频讲解AcWing 841. 字符串哈希 - AcWing
66 0
|
算法
算法:next数组的求法详解
算法:next数组的求法详解
797 0
算法:next数组的求法详解
|
存储 算法 BI
KMP算法(kmp) next数组算法解析
KMP算法(kmp) next数组算法解析
128 0
KMP算法(kmp) next数组算法解析
|
算法 PHP Python
最长公共子串- LCS 算法
最长公共子串- LCS 算法
88 0
|
算法
【26. 字符串哈希】
**用到字符串的地方一般可以用KMP算法。用KMP算法的一般都可以用字符串哈希。代码更简单。**(特殊的哈希方式,字符串前缀哈希法) - 把字符串变成一个p进制数字(哈希值),实现不同的字符串映射到不同的数字。(`比较俩个区间字符串前缀是否相等就变成了比较俩个区间字符串哈希是否相同`) ### 核心 - `以一个K进制的角度,来吧字符串看成数字。`
138 0