博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
后缀数组与后缀自动机学习笔记
阅读量:4583 次
发布时间:2019-06-09

本文共 429 字,大约阅读时间需要 1 分钟。

这只是个人小结,没啥大意义。

后缀数组

其实就是通过把字符串的所有后缀排序来实现一些东西。

后缀排序可以用倍增+双关键字来实现。

然后排完之后可以求出height数组,然后就可以用RMQ求LCA了。

后缀自动机

各种复杂度都是线性的,非常优秀。

原理:把具有相同right集合的状态缩成一个点,这个点内的所有状态互为后缀。

每个状态有一个minlen和maxlen,表示这个状态内的最长子串和最短子串。

构造方法:增量构造法,考虑这个字符的加入会使之前的所有后缀增加一个字符,所以可以通过调fail树来构造。

然后就是father的问题,如果l[p]+1=l[q]那么可以直接连father,否则直接连状态会出现问题,那么我们就新建立一个节点。

应用:

1、求某个子串在原串中的出现次数,在后缀节点上大标记,该子串代表的节点子树的size就是出现次数。

转载于:https://www.cnblogs.com/ZH-comld/p/10159065.html

你可能感兴趣的文章
用Python学分析 - 单因素方差分析
查看>>
2018个人年终总结
查看>>
[编辑排版]小技巧---markdown 转 richText
查看>>
JSON_UNESCAPED_UNICODE
查看>>
bug解决思路
查看>>
Oracle没有WM_CONCAT函数的解决办法
查看>>
消息中间件——RabbitMQ(四)命令行与管控台的基本操作!
查看>>
Eclipse 写代码是自动重启服务
查看>>
3.8 spring - AbstractBeanDefinition 介绍
查看>>
如何在Visual Studio里面查看程序的汇编代码?
查看>>
解决IE11只能用管理员身份运行的问题
查看>>
android学习-LocationManager(一)-
查看>>
Linux安装单机solr
查看>>
dos alias/cname address
查看>>
NAT模式实现局域网物理机与虚拟机的互通访问
查看>>
cygwin下用arm-xscale-linux-gnueabi交叉编译libcgi
查看>>
delphi中WMI的使用(网卡是否接入)
查看>>
转载:面试:----电商项目中比较难得问题
查看>>
js弹出遮罩层
查看>>
Linux tar打包命令
查看>>