0

大家好,我的哈希函数有一个大问题。我试图解释我的问题:

我有一组字符,我想做一个哈希函数,因为我想用哈希集更改集合,对于每个字符我都有一个索引,所以我现在做什么:

pair --> index p = 1 index a = 2 index i = 3 index r= 4---> 所以我的哈希返回 1234

但如果例如我有

所以 --> 索引 s = 12 索引 o = 34 ---> 哈希 1234

碰撞!!!!

PS:我不能按字母数字排序我的字符....

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

4

1 回答 1

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;
}
于 2013-04-17T16:30:03.847 回答