大家好我的哈希函数存在很大问题。我试着解释我的问题:
我有一组char,我想做一个哈希函数,因为我想用哈希集更改集合,对于每个char都有一个索引,所以我现在做的是:
对 - > index p = 1 index a = 2 index i = 3 index r = 4 --->所以我的哈希值返回1234
但是,例如我有
所以 - > index s = 12 index o = 34 --->哈希1234
COLLISION !!!!
P.S。 :我不能用字母数字来命令我的字符....
那么,有没有人可以帮助我?感谢很多:)
答案 0 :(得分:0)
您可以尝试使用Java的字符串哈希函数。这是我的C#端口,应该简单地移植到c ++:
int javaHash(String txt) {
uint h = 0;
if(txt.Length > 0) {
for(int i = 0; i < txt.Length; i++) {
h = 31 * h + txt[i];
}
}
return (int)h;
}