辣鸡知识
1.匹配子串
- 哈希:处理出子串和模式串的哈希值,然后一位位匹配,$O(n)$
- KMP
2.最短循环节
- 枚举约数,判断每段的哈希值是否相等
- KMP:若字符串的长度为$len$,则字符串存在循环节当且仅当$len%(len-nxt[len])==0&&len/(len-nxt[len])>1$
- 如何理解:首先$nxt[]$数组表示的是最长公共前后缀的长度,那么
- 红色的是最长公共前后缀,两种蓝色是为了和原来对齐(自己肯定跟自己一样)
- 然后我们把上面的串位置动一下:
-
但是我们发现,公共前后缀又是匹配的:
- so
- 一直往后匹配就OK
3.最长公共前后缀
- 哈希:枚举每一个前后缀,看哈希值是否相等
- KMP:$nxt[]$数组
4.最长回文子串
- 哈希:枚举每个回文中心,二分回文串长度。
- manacher
推荐文章:
哈希:https://www.cnblogs.com/jklover/p/10185164.html
manacher:https://www.cnblogs.com/xiaoningmeng/p/5861154.html
2019.06.27 开始了