KMP
首先,要知道在KMP算法里的 next 数组里,对操作的字符串到底存储了什么。
以当前字符为结尾的子串,真前缀与真后缀相同的最长长度。(注意:不是说回文;而且是“真”,也就是说,不会包含一整个原字符串)
字符串哈希
定义
用类似前缀和的形式以便求出任意一个子串的Hash值
自然溢出:ull类型的数据,是64位且不包含符号位的数据,溢出相当于是对 2^64 取模。
进制base
h[i] 计算的是字符串 s[1-i] 哈希值
计算
把前一个的值乘 base ,再加上本位的字符值。
要减去 h[l-1],且因为乘了base好几次,所以要减的是 h[l-1] 的 b[r-l+1] 的倍数。