我将在一周内出现在谷歌现场采访。我知道哈希表,哈希映射,哈希函数非常有用,并且在许多面试问题中很方便,例如字典,桶排序,以检查整个文档的重复性,重复的URL等,可以在字符串上,也可以在整数上。我想知道在整数和字符串上有哪些流行的哈希函数。
我能想到的是整数的h(n)= n,其中我们想要根据他们的分数对学生进行排名,即非常有限的可能值范围。
请帮助更多流行的选择esp for strings,documents。
谢谢,
答案 0 :(得分:9)
对于字符串,可以使用字符串的cryptographic hash作为hash table的键。这通常会导致散列键的均匀分布,这是一个很好的散列表属性。
如果要缩小密钥的大小(例如仅32位),仍然可以选择加密散列函数(如SHA-256)并使用低32位。
也可以将数字表示为字符串或二进制数据,并计算其加密哈希以确保统一的密钥分发。
一旦您的密钥均匀分布,您就不需要使用复杂的哈希函数 - 您只需将密钥范围映射到大小相同的区域。
为了让自己更好地为面试做好准备,您可能还想阅读this。