是否有一种方法可以对多个无序的字符串集进行哈希处理,使得在这些集合中,元素的值相同。 例如:
set1 = [ "ab3567cd", "123", "789012" ]
set2 = [ "789012", "ab3567cd", "123" ]
set3 = [ "123", "789012", "ab3567cd" ]
并且能够对这些集合进行哈希处理,而不需要将它们排序。
是否存在这样的哈希函数?
如果不对它们进行排序使它们具有相同的位置,你将始终获得不同的哈希值。
这些都是不同的字符串:
ab3567cd 123 789012
789012 ab3567cd 123
123 ab3567cd 789012
更新:
有两种解决方案,但我不知道这是否是正确的方法。
这只是一个逻辑示例,它可能不是正确的函数/计数方式!
如果使用正确的函数计算集合的值。
set1 = [ "ab3567cd", "123", "789012" ]
计数:
"ab3567cd" (+ or *) "123" (+ or *) "789012" = RESULT_VALUE
当您对 RESULT_VALUE 进行哈希时,对于 set1、set2 和 set3,您将始终获得相同的哈希值。
RESULT_HASH = HASH(RESULT_VALUE)
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)