c++ - 关于忽略字符顺序的字符串哈希函数的建议

标签 c++ string hash unordered-map

我需要一个用于 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/

相关文章:

Swift String to Int 总是返回 nil

asp.net - 如何将文本附加到数据绑定(bind)字段?

python - 匹配哈希+加盐密码

algorithm - 哈希算法的困惑

git - git 标签对象的格式是什么以及如何计算它的 SHA?

C++/Arduino 集成开发环境。将 float 发布到 MQTT - 是否需要转换为字符串 -> 数组?

c++ - MSVC项目中使用的Mingw静态库

c++ - 为什么当我创建一个包含 N 个对象的 vector 时,CTOR 没有被调用 N 次?

java - java中字符串有空格时无法获取整个字符串

c++ - 可缩放和平移的易于使用的 GUI?