0

こんにちは、ハッシュ関数に大きな問題があります。私は自分の問題を説明しようとします:

char のセットがあり、ハッシュ セットを使用してセットを変更したいので、ハッシュ関数を実行したいのですが、各 char には index があるので、次のようにします。

ペア --> インデックス p = 1 インデックス a = 2 インデックス i = 3 インデックス 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 に答える