private long hash(String s, int M)
{
long h = 0;
for (int j = 0; j < M; j++)
h = (h * R + s.charAt(j)) % Q;
return h;
}
例如:
(((s[0])*R+s[1])%Q)*R+s[2])%Q
= ((s[0])*R+s[1])*R+s[2])%Q
我总觉得这式子不相等。
我知道有这些等价关系:
(a + b) mod Q = ((a mod Q) + (b mod Q)) mod Q
(a * b) mod Q = ((a mod Q) * (b mod Q)) mod Q