首页 > 代码库 > 后缀数组笔记
后缀数组笔记
在字符串匹配问题中经常出现这两个概念:
文本(text):原文
模板(pattern):关键词(相当于一个子串)
任务:在text中找pattern
常用算法:
AC自动机:多个pattern
KMP:已知pattern,对pattern进行预处理
Trie:也叫前缀树,常用于找字符串前缀
后缀数组:已知text,对text进行预处理
后缀树:其实就是路径压缩版的trie树,把树上没有分叉的路径压缩掉了
-----------------------------------------------------------------
sa[i]:后缀数组,pattern的所有后缀从小到大排序后,排好序的第i个后缀的开头位置(共n个后缀,sa[0..n-1])
eg:对于单词”banana“,sa={5,3,1,0,4,2},分别对应后缀a, ana, anana, banana, na, nana
rank[i]:保存sa[i]在所有后缀中从小到大排列的名次
sa[i]与rank[i]互逆,即sa[rank[i]]=i, rank[sa[i]]=i
定义height[i]=sa[i-1]和sa[i]的最长公共前缀长度(即两个排名相邻的后缀的最长公共前缀长度)
后缀数组笔记
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。