我输入(“ubuntu”,1007)的时候,我的结果被显示错误。
class Solution {
/**
* @param key: A String you should hash
* @param HASH_SIZE: An integer
* @return an integer
*/
public int hashCode(char[] key,int HASH_SIZE) {
// write your code here
int q=1;
long result=0;
int len=key.length;
for(int i=len-1;i>-1;i--)
{
result=result+key[i]*q;
q=q*33;
}
result= result % HASH_SIZE;
return (int) result;
}
};
你要注意q可能会溢出,在q=q*33下面加一行q=q%HASH_SIZE
你要注意q可能会溢出,在q=q*33下面加一行q%keysize
int q=1;
->
long q=1;
试试看
http://ideone.com/uVQnpc
结果是549
33的六次方会不会超出int的表示范围?应该不会吧