LintCode 128. Algoritmo JavaScript de función hash

descripción

En la estructura de datos, la función hash se utiliza para convertir una cadena (o cualquier otro tipo) en un número entero menor que el tamaño de la tabla hash y mayor o igual a cero. Una buena función hash puede producir la menor cantidad de colisiones posible. Un algoritmo de función hash muy utilizado es usar el valor 33, asumiendo que cualquier cadena se basa en un entero grande de 33, como:

código hash ("abcd") = (ascii (a) * 33 ^ 3 + ascii (b) * 33 ^ 2 + ascii © 33 + ascii (d))% HASH_SIZE
= (97
33 ^ 3 + 98 * 33 ^ 2 + 99 * 33 +100)% HASH_SIZE
= 3595978% HASH_SIZE

HASH_SIZE representa el tamaño de la tabla hash (se puede suponer que una tabla hash es una matriz con un índice de 0 ~ HASH_SIZE-1).

Dada una cadena como clave y el tamaño de una tabla hash, devuelve el valor hash de esta cadena.

Descripción

Para este problema, no necesita diseñar su propio algoritmo hash ni considerar ningún problema de conflicto, solo necesita implementar el algoritmo como se describe.

Muestra

- 样例 1:

输入:  key = "abcd", size = 1000
输出: 978	
样例解释:(97 * 33^3 + 98*33^2 + 99*33 + 100*1)%1000 = 978

- 样例 2:

输入:  key = "abcd", size = 100
输出: 78	
样例解释:(97 * 33^3 + 98*33^2 + 99*33 + 100*1)%100 = 78

Analizando

hashCode = (key, HASH_SIZE) => {
    
    
    result=0;
    for(i=0;i<key.length;i++){
    
    
        result=(key[i].charCodeAt()+result*33)%HASH_SIZE
    }
    return result;
};

resultado de la operación

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/SmallTeddy/article/details/108724545
Recomendado
Clasificación