以任何顺序给出的相同字符集的唯一哈希?
Posted
技术标签:
【中文标题】以任何顺序给出的相同字符集的唯一哈希?【英文标题】:Unique hash for same set of characters given in any order? 【发布时间】:2015-04-18 09:09:22 【问题描述】:考虑这个寻找字谜的例子
aabc
abca
它们都是字谜,我正在寻找一种方法,使它们由字符生成的哈希值相同且唯一。
唯一性很重要,因此不会有两个不同的字符串aabc
和xyaq
生成相同的哈希
我对此一无所知,但在这里呕吐以了解我需要查找的内容
【问题讨论】:
您正在寻找的是一个完美的散列函数(假设"aabc".equals("abca")
在有限的Set
中并一起代表Set
中的不同元素。)。您的问题定义必须是有限的,任何人都可以提出解决方案。
哈希本质上永远不会是唯一的。要么找到一种可以接受的方法,要么找到一些非哈希方法。
this is an idea
【参考方案1】:
对字符串中的字符进行排序并将其用作哈希。字符串将具有相同的散列如果它们是彼此的字谜:
String anagramHash(String str)
char[] chars = str.toCharArray();
Arrays.sort(chars);
return new String(chars);
如果您的代码点不在 BMP (http://docs.oracle.com/javase/7/docs/api/java/lang/Character.html) 上,这可能不起作用。
或者,生成一个直方图并将其用作哈希。
【讨论】:
不同的字符串可以有相同的hash,所以当且仅当部分不成立。以上是关于以任何顺序给出的相同字符集的唯一哈希?的主要内容,如果未能解决你的问题,请参考以下文章
2021-09-16:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。按键2对应:‘