字符串hash的学习部分 可以算是模板?

资料来自于http://www.bilibili.com/video/av7230433/

定义这个字符串为s

①单hash

hash[i] = (hash[i - 1] * p + idx(s[i])) % mod

②双hash(更加保险)

hash1[i] = (hash1[i - 1] * p + idx(s[i])) % mod1;

hash2[i] = (hash2[i - 1] * p + idx(s[i])) % mod2;

注意,一般的话p是一样的,mod取不一样的。

③字符串子串的hash值

hash[l~r] = (hash[r] - hash[l - 1] * (p ^ (r - l + 1))%mod + mod) % mod 

一般的题目类型:hash+二分

例如那个网站的四五六题,二分枚举字符串长度即可。

第七题的话hash暂时不会= =!,貌似可以用后缀数组来做?

原文地址:https://www.cnblogs.com/heimao5027/p/6371569.html