后缀数组算法介绍

简介: 后缀数组学习

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

相关文章
|
5月前
|
人工智能 算法 测试技术
【动态规划】【字符串】【C++算法】940. 不同的子序列 II
【动态规划】【字符串】【C++算法】940. 不同的子序列 II
|
5月前
|
算法
KMP 算法小结
KMP 算法小结
28 0
|
5月前
|
算法 NoSQL 容器
Rabin-Karp字符串哈希算法
Rabin-Karp字符串哈希算法
|
5月前
|
算法 C#
Leetcode算法系列| 5. 最长回文子串
Leetcode算法系列| 5. 最长回文子串
|
5月前
|
算法
【算法总结】字符串哈希
【算法总结】字符串哈希
97 0
|
算法
Manachar算法(马拉车算法):快速求取最长回文子串
求取最长回文子串的长度的最佳方法为 Manachar算法 ,俗称马拉车算法。常见的方法就是中心扩散法,但时间复杂度较高。
93 0
Manachar算法(马拉车算法):快速求取最长回文子串
|
存储 算法 Java
【基础算法】字符串哈希
【基础算法】字符串哈希
101 0
【基础算法】字符串哈希
|
算法
算法:next数组的求法详解
算法:next数组的求法详解
836 0
算法:next数组的求法详解
|
存储 算法 BI
KMP算法(kmp) next数组算法解析
KMP算法(kmp) next数组算法解析
139 0
KMP算法(kmp) next数组算法解析
|
机器学习/深度学习 存储 容器
1044. 最长重复子串 :「字符串哈希 + 二分」&「后缀数组」
1044. 最长重复子串 :「字符串哈希 + 二分」&「后缀数组」