2019.4.9胡凡算法笔记

1.1 二维整点P的坐标映射

如何将二维整点P的坐标映射为一个整数,为一个整数,使得整点P可以由该整数唯一地代表。假设一个整点P的坐标(x,y),其中0≤x,y≤Range,那么可以令hash函数为H(P) = x * Range + y

1.2字符串hash

指将一个字符串S映射为一个整数。假设字符串均由大写字母AZ构成,对应026,接下来就按照将二十六进制转换为十进制的思路,(转换成的整数最大是26^len-1)代码如下:

int hashFunc(char S[], int len)
{
    int id = 0;
    for (int i=0; i

使用时注意len不能太长,否则转换出的整数也会很大。如果字符串中出现了小写字母,那么可以把AZ作为025,而把az作为2651,这样就变成了一个五十二进制转换为十进制的问题,相似:

int hashFunc(char S[], int len)
{
    int id = 0;
    for (int i=0; i= 'A' && S[i] <= 'Z')
            id = id * 52 + (S[i] - 'A');
        else if(S[i] >= 'a' &&S[i] <= 'z')
            id = id * 52 + (S[i] - 'a') + 26;
    }
    return id;
}

你可能感兴趣的:(2019.4.9胡凡算法笔记)