小编典典

良好的字符串散列函数

all

我正在尝试为字符串想出一个好的散列函数。而且我认为总结字符串中前五个字符的 unicode
值可能是一个好主意(假设它有五个,否则在它结束的地方停止)。这是一个好主意,还是一个坏主意?

我在 Java 中这样做,但我不认为这会产生很大的不同。


阅读 59

收藏
2022-07-30

共1个答案

小编典典

通常散列不会求和,否则stoppots具有相同的散列。

并且您不会将其限制为前 n 个字符,因为否则 house 和 house 将具有相同的哈希值。

通常哈希取值并将其乘以素数(使其更有可能生成唯一的哈希)所以你可以这样做:

int hash = 7;
for (int i = 0; i < strlen; i++) {
    hash = hash*31 + charAt(i);
}
2022-07-30