Hal*_*Hal 13 delphi string hash
我正在尝试将字符串散列为一个整数,以便将其放入数组中.但是我不太了解散列函数,这就是为什么我当前的方法只是将字符的所有ASCII数字加在一起并将其调整为数组大小.
有没有简单的更快/更好的方法?
Jenkins 哈希函数应该可以帮助您入门。
我当前的方法只是将字符的所有 ASCII 数字相加,然后对数组大小取模。
您丢弃了重要的信息,即字符在字符串中的位置。这是一个坏主意,因为字符串“AB”和“BA”将具有相同的哈希值。
可以使用类似hash = hash*P1 + str[i]*P2 + P3;其中 P i是一些素数的表达式,而不是简单的加法,保持其原始性。如果我快速需要一个哈希函数,我就是这样做的。我经常使用 7、5 和 3 作为素数,但应该明显调整数字(以及 的初始值hash),以便哈希函数的结果可用于您的任务。
有关更多信息,请阅读相应的(且信息丰富的)维基百科文章。
| 归档时间: |
|
| 查看次数: |
17469 次 |
| 最近记录: |