登录
首页 >  Golang >  Go问答

有没有适用于无序字符串集的高效哈希函数?

来源:stackoverflow

时间:2024-03-04 13:45:30 374浏览 收藏

有志者,事竟成!如果你在学习Golang,那么本文《有没有适用于无序字符串集的高效哈希函数?》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

有没有一种方法可以处理多个无序字符串集合,其中字符串元素相同。 例如:

set1 = [ "ab3567cd", "123", "789012" ]

set2 = [ "789012", "ab3567cd", "123" ]

set3 = [ "123", "789012", "ab3567cd" ]

对这些集合进行哈希处理会返回相同的结果,而无需对它们进行排序。

有这样的哈希函数吗?


正确答案


如果不将它们排序为具有相同的位置,您将始终得到不同的哈希值。

这始终是不同的字符串:

ab3567cd 123 789012

789012 ab3567cd 123

123 ab3567cd 789012

Do identical strings always have the same SHA-256 value?

What is a Hashing Algorithm and How Does it Work?

How does file hashing works?

更新:

有两种解决方案,但我现在不知道这是否是正确的方法。

这只是一个逻辑示例,它可能不是正确的函数/计数方式!

  1. 解决方案

如果我用正确的函数计算集合的值。

set1 = [ "ab3567cd", "123", "789012" ]

计数:

"ab3567cd" (+ or *) "123" (+ or *) "789012" = result_value

对 result_value 进行哈希处理后,您将始终获得 set1、set2 和 set3 的相同哈希值。

result_hash = hash(result_value)
  1. 解决方案

set1 = [ "ab3567cd", "123", "789012" ]

create hash1 from "ab3567cd"

create hash2 from "123"

create hash3 from "789012"

计数:

hash1 (+ or *) hash2 (+ or *) hash3 = result_value

对 result_value 进行哈希处理后,您将始终获得 set1、set2 和 set3 的相同哈希值。

result_hash = hash(result_value)

这个逻辑示例适用于所有可以散列的语言。

今天关于《有没有适用于无序字符串集的高效哈希函数?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>