algorithm - 哈希函数 f(a, b) = f(b,a)

标签 algorithm hash

<分区>

我需要带有两个参数的简单散列函数,参数如下:

  • a,b,c,d 是不同的字符串(大约 30 个字符)
  • f(a,b) = f(b,a)
  • f(a,c) ≠ f(a,d)
  • f(c,b) ≠ f(d,b)

最佳答案

排序并连接两个参数(以确保f(a,b)等于f(b,a))。因为只有两个项目需要排序结果将是 abba

如果字符串具有 ab 可能等于 cd 的属性(例如 strong + heartedstrongheart + ed) 您可能想通过在字符串前面添加以固定字节数编码的第一个字符串的长度来“加盐”。

然后对结果应用字符串散列。 There are numerous examples online .

请注意,不能保证两个不同的字符串不会产生相同的散列值,但好的散列算法会降低这种可能性。

关于algorithm - 哈希函数 f(a, b) = f(b,a),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39847048/

相关文章:

java - 在容量为 M 的 K 个房间中分配 N 吨食物

c++ - 为什么 hash<const char*> 适用于字符串而不适用于字符串变量?

ruby-on-rails - 在 Ruby on Rails 中将数组/哈希转换为 YAML

ruby - 使用数组键和默认值填充散列

VB.NET 以最少的步骤自定义复杂排序

在 GPS 路径中检测 "brownian/random walk"路径运动的算法

authentication - 关闭 Cakephp Auth 密码散列

hash - 为什么我的程序错误地计算了MD2哈希?

algorithm - 所有最长递增子序列的数量

algorithm - 我对中位数算法的中位数不了解