字符串哈希
前言
一个很灵活的算法。
1. 原理
哈希本质上是一种映射关系,在字符串中也如此。
对于任意的一个字符串,我们通过某一个哈希函数求解出这个字符串中每一个子串的哈希值。
一个好的哈希函数有这样的性质:
- 当两个字符串相同时,两者由哈希函数生成的哈希值也相等。
- 当两个哈希值相等时,通过哈希函数生成这两个值的两个字符串也是相等的。
- 当两个字符串不同时,其生成的哈希值相同的概率应尽可能小。
使用了好的哈希函数的字符串哈希算法可以在 on 的时间内求解出一个字符串所有子串的哈希值,可以在 o1 的时间复杂度内判断两个字符串是否相等。
2. 实现
虽然我们要求出一个字符串中每一个子串的哈希值,但并不需要枚举每一个子串。我们使用前缀和的思想,通过递推,利用数学方法就可以很快求解。
迁移自洛谷

浙公网安备 33010602011771号