将一个字符串S映射为一个整数:
(1)大写字母“A~Z”:
A~Z视为0~25,将26个字符对应到二十六进制,按照二十六进制转换为十进制:
代码:
int hashFunc(char S[], int len)
{
int id=0;
for(int i=0; i<len; i++)
{
id = id*26 +(S[i] - 'A');
}
return id;
}
(2)小写字母 a~z
int hashFunc(char S[], int len)
{
int id=0;
for(int i=0; i<len; i++)
{
if(S[i] >= 'A' && S[i] <= '2'){
id = id *52 + (S[i] - 'A');
}else if(S[i] >= 'a' && S[i] <= 'z'){
id = id *52 +(S[i] - 'a')+26;
}
}
return id;
}
(3)出现了数字BCD3
int hashFunc(char S[], int len)
{
int id=0;
for(int i=0; i<len-1; i++)
{
id =id*26 +(S[i] - 'A');
}
id = id *10 + (S[len - 1] - '0');
return id;
}