我正在审查我的数据结构期末考试,并且在过去一年的决赛中我遇到了一个问题。在过去的三个小时里一直工作,除了通过试验和错误之外,我仍然无法找出解决办法。这里的问题:查找散列表中的冲突
“假设你的哈希表的大小为31,常数G也是31,和您使用以下哈希码
int hash = 0;
int n = s.length();
for (int i = 0; i < n; i++)
hash = g * hash + s.charAt(i);
和使用分离链解决列出五个不同的名字,这些名字将散列到表格中的相同位置。“
我认为必须有一些技巧,可能涉及模运算符,以解决这个问题,考虑到散列表的大小是31,这是常数g相同。对不起,如果我听起来像这样,但我不是要求代码或任何东西,只是对问题的一些想法/提示。任何评论非常感谢。感谢
有趣!非常感谢您指出这一点。 –
很高兴帮助... –
顺便说一下,哈希的这种实现将Java留给了DoS攻击!见http://www.ocert.org/advisories/ocert-2011-003.html,http://cryptanalysis.eu/blog/2011/12/28/effective-dos-attacks-against-web-application-plattforms -hashdos /或Google使用哈希映射进行DoS攻击。 – yshavit