串子(待补)
写在前面
这个是自己看到,你看不懂请寻找oiwiki,见谅)
正文:
简单的几笔带过了。
hash
简单来说就是字符串的映射。
把一个字符串用一个值表示出来。
可以在一定范围内用 hash 方法确定唯一值。
最重要的就是两句话
- 在 Hash 函数值不一样的时候,两个字符串一定不一样;
- 在 Hash 函数值一样的时候,两个字符串不一定一样.
在求hash值的时候
建议双hash,或自然溢出,或hash_table。
一般定义 hash 函数:
\(Hash(s)=(\sum^n_{i=1}s_i\times b^{n-i})mod \ \ \ M\)
其中 M 是大模数,b是底数,通过这个可以前缀和获得一段区间的Hdash值。
应用:
- 快速判定字串是否相同。(前缀和记录hash值判等)
- 允许 𝑘 次失配的字符串匹配。
hash+二分,对于每次失败后找一个 k 范围内的合法匹配位置。最多作k次。 - 最长回文子串,枚举对称点后二分长度判最大。
KMP
其实KMP的思想很简单,就是建立前缀最长匹配数组,然后在字符串匹配时通过最大前缀数组优化转移

这个是建出前缀数组,先在不匹配时跳前缀的前缀数组,再在匹配后以此更新当前点的前缀数组

这个是利用前缀数组求取最大匹配,当kmp到最后长度后跳出去记录答案
trie
AC自动机
EXKMP
马拉车
SA
SAM
后缀树
慢慢写吧,希望今年可以写完

难绷
浙公网安备 33010602011771号