是否存在可以忽略该字符串中字符顺序的字符串哈希?例如,“helloword”和“wordhello”可以映射到同一个存储桶中。
您可以采取多种不同的方法。
-
您可以将字符的值加在一起。 (a + b + c 是
等于 a + c + b。)不幸的是,这是最不理想的
方法,因为像“ac”和“bb”这样的字符串会生成相同的
哈希值。
-
为了减少哈希码冲突的可能性,您可以对
价值观在一起。 (a ^ b ^ c 等于 a ^ c ^ b。)不幸的是,
这不会给出非常广泛的随机位分布,所以它
不同的字符串仍然有很高的碰撞机会。
-
为了进一步减少哈希码冲突的可能性,您
可以将字符的值相乘。 (a * b * c 是
等于 a * c * b。)
-
如果这还不够好,那么你可以对所有
应用默认字符串哈希之前字符串中的字符
无论您使用哪种语言,都可以为您提供功能
使用。 (因此,“helloword”和“wordhello”都会变成“dehlloorw”
在散列之前,从而生成相同的散列码。)这种方法的唯一缺点是它的计算成本比其他方法更昂贵。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)