gpt4 book ai didi

c++ - 你如何散列一个字符串?我需要以某种方式将随机字符串转换为整数以将它们放入我的哈希表中

转载 作者:行者123 更新时间:2023-11-28 03:44:15 29 4
gpt4 key购买 nike

例如,“foobar”应该散列为类似 3456 的值。我的散列表数组的大小为 811,因此我的散列函数将执行 3456 % 811 以在散列表中找到放置“foobar”的位置。

有什么建议吗?

最佳答案

我建议 djb2 来自 Hash Functions

djb2

this algorithm (k=33) was first reported by dan bernstein many years ago in comp.lang.c. another version of this algorithm (now favored by bernstein) uses xor: hash(i) = hash(i - 1) * 33 ^ str[i]; the magic of number 33 (why it works better than many other constants, prime or not) has never been adequately explained.

unsigned long hash(unsigned char *str)
{
unsigned long hash = 5381;
int c;

while (c = *str++)
hash = ((hash << 5) + hash) + c; /* hash * 33 + c */

return hash;
}

同样感兴趣

是引用的原始 K&R 书中的 lose lose 实现。一个很好的例子,说明如何散列您的字符串。

关于c++ - 你如何散列一个字符串?我需要以某种方式将随机字符串转换为整数以将它们放入我的哈希表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8107086/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com