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