串子(待补)

写在前面

这个是自己看到,你看不懂请寻找oiwiki,见谅)

正文:

简单的几笔带过了。

hash

简单来说就是字符串的映射。
把一个字符串用一个值表示出来。
可以在一定范围内用 hash 方法确定唯一值。
最重要的就是两句话

  1. 在 Hash 函数值不一样的时候,两个字符串一定不一样;
  2. 在 Hash 函数值一样的时候,两个字符串不一定一样.

在求hash值的时候
建议双hash,或自然溢出,或hash_table。
一般定义 hash 函数:
\(Hash(s)=(\sum^n_{i=1}s_i\times b^{n-i})mod \ \ \ M\)
其中 M 是大模数,b是底数,通过这个可以前缀和获得一段区间的Hdash值。
应用:

  1. 快速判定字串是否相同。(前缀和记录hash值判等)
  2. 允许 𝑘 次失配的字符串匹配。
    hash+二分,对于每次失败后找一个 k 范围内的合法匹配位置。最多作k次。
  3. 最长回文子串,枚举对称点后二分长度判最大。

KMP

其实KMP的思想很简单,就是建立前缀最长匹配数组,然后在字符串匹配时通过最大前缀数组优化转移
image
这个是建出前缀数组,先在不匹配时跳前缀的前缀数组,再在匹配后以此更新当前点的前缀数组
image
这个是利用前缀数组求取最大匹配,当kmp到最后长度后跳出去记录答案

trie

AC自动机

EXKMP

马拉车

SA

SAM

后缀树

慢慢写吧,希望今年可以写完

posted @ 2025-11-08 15:34  rerecloud  阅读(5)  评论(0)    收藏  举报