字符串hash是指将一个字符映射成一个整数,使得该整数可以尽可能地通过H§来唯一地表示字符串S。(令hash函数为H(P)=x*Range+y) 若字符串都由大写字母构成,可将A~Z视为0到25,按照二十六进制转换成十进制,实现将字符在映射为整数的需求
int hashFunc(char S
[],int len
)
{
int id
=0;
for(int i
=0;i
<len
;i
++)
{
id
=id
*26+(S
[i
]-'A');
}
return id
;
}
注:若字符串长度较长,那么转换成的整数也会比较大,所以需要注意使用时len不能太长,若有小写字母,可将小写字母视为26到51
int hashFunc(char S
[],int len
)
{
int id
=0;
for(int i
=0;i
<len
;i
++)
{
if(S
[i
]>='A'&&S
[i
]<='Z')
{
id
=id
*52+(S
[i
]-'A');
}
}
return id
;
}
若要保证在字符串的末尾是确定个数的数字,可以把前面英文字母的部分按上面的思路转换为整数,再把末尾的数字直接拼凑上去
int hashFunc(char S
[],int len
)
{
id
=id
*26+(S
[i
]-'A');
}
id
=id
*10+(S
[len
-i
]-'0');
return id
;
}