假设我有n个字符串,现在我想使用一个函数将每个字符串映射到0到n-1范围内的整数,这样每当我调用一个函数并传递字符串和n它就会给我在旅途中同样独特的映射。所以如果我有4个字符串“str1”,“str2”,“str3”,“str4”那么映射将是0-3并且是唯一的。
我尝试过这样的事情:str.hashCode() % n
,这给了我相同的映射,但不在0到n-1的范围内。我在PHP中发现了类似于此处的内容 -
https://madcoda.com/2014/04/how-to-hash-a-string-to-integer-with-a-range-php/
答案 0 :(得分:1)
备案
Math.abs(str.hashCode() % 7)
结果将为 0 到 6 包含在内。
如果输入字符串真的是随机的并且长度相同等等(例如......输入是一大堆uuid)那么这里的输出将是随机平衡的。
如果输入是——比如说——很多人的名字,那么输出是不太可能随机平衡的。
OP 在标题中的字面意思在这里得到了回答。
事实上,OP 所询问的(在正文中)与散列完全没有关系。 (那只是一个查找表、一个正则表达式等。)