资料来自于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暂时不会= =!,貌似可以用后缀数组来做?