我需要一个用于 C++ 中的 unordered_map<string, int>
的散列函数。我需要根据内容对 key 进行哈希处理,但它不应该取决于内容的顺序。
例如,在我的 map 中,键是字符串,我需要“ac”、“ca”来生成相同的哈希值,但“bb”应该生成不同的哈希值。
我尝试总结字符串的内容,但我意识到在那种情况下,“ac”和“bb”生成相同的哈希值。
有类似的问题 Does a string hash exist which can ignore the order of chars in this string ,但也没有得到回答。
最佳答案
由于 a * b * c 等同于 a * c * b,您可以将字符相乘而不是相加。
这也比在散列之前必须对每个字符串中的所有字符进行排序要快得多。
关于c++ - 关于忽略字符顺序的字符串哈希函数的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28931962/