ULL get(int l, int r) // 计算子串 str[l ~ r] 的哈希值
{
return h[r] - h[l - 1] * p[r - l + 1];
}
连续的数组也可以用这种方法哈希
string s;
cin>>s;
s=" "+s;
p[0]=1;
for(int i=1;i<s.size();++i){
p[i]=p[i-1]*P;
h[i]=h[i-1]*P+s[i]-'a'+1;
}
浙公网安备 33010602011771号