关于字符串哈希函数的建议忽略了字符的排序

时间:2015-03-08 21:14:03

标签: c++ string hash unordered-map

我需要在c ++中使用unordered_map<string, int>的散列函数。我需要根据内容进行哈希处理,但不应该依赖于内容的顺序。

例如,在我的地图中,键是字符串,我需要&#34; ac&#34;,&#34; ca&#34;生成相同的哈希值,但是&#34; bb&#34;应生成不同的哈希值。

我尝试总结字符串的内容,但我意识到在那种情况下,&#34; ac&#34;和&#34; bb&#34;生成相同的哈希值。

有类似问题Does a string hash exist which can ignore the order of chars in this string,但也没有回答。

1 个答案:

答案 0 :(得分:1)

由于a * b * c相当于a * c * b,因此可以将字符相乘而不是添加它们。

这也应该比在对每个字符串进行哈希处理之前对所有字符进行排序要快得多。