[字符串] KMP与字符哈希

时间:2024-02-15 13:15:40

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] 的倍数。