字符串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;
}