[笔记] 字符串基础总结

辣鸡知识


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 开始了

原文地址:https://www.cnblogs.com/Jackpei/p/11099197.html