【发布时间】:2016-06-21 04:24:08
【问题描述】:
有没有一种方法可以使用 Java 的 .hashCode() 方法计算一定长度的字符串的最小/最大哈希码?
来自docs,使用的算法是:
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
...它返回一个int,它可能是正数或负数。
由于它添加了所有字符来计算哈希,我尝试通过在由最小/最大字符值组成的相同长度的字符串上运行 .hashCode() 来找到最小/最大哈希 (space = 32 , ~ = 126),但我得到的 s 的值超出了我的最小/最大哈希值的范围。
int s = "hello world".hashCode(); // 1794106052
// strings the same len as "s"
int minHash = " ".hashCode(); // 2142006304
int maxHash = "~~~~~~~~~~~".hashCode(); // -2034832962
// hash for s i
【问题讨论】: