碰撞散列函数

时间:2013-04-17 15:18:19

标签: hash integer collision hashset hash-function

大家好我的哈希函数存在很大问题。我试着解释我的问题:

我有一组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。 :我不能用字母数字来命令我的字符....

那么,有没有人可以帮助我?感谢很多:)

1 个答案:

答案 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;
}