哈希函数

哈希函数

描述

在数据结构中,哈希函数是用来将一个字符串(或任何其他类型)转化为小于哈希表大小且大于等于零的整数。一个好的哈希函数可以尽可能少地产生冲突。一种广泛使用的哈希函数算法是使用数值 33,假设任何字符串都是基于 33 的一个大整数,比如:

hashcode("abcd")
=(ascii(a) * 333+ascii(b) * 332+ascii(c) * 33 +ascii(d))=(
ascii(a)∗333+ascii(b)∗332+ascii(c)∗33+ascii(d)) % HASH_SIZE
= (97
333+ 98332+ 99 33 +100)=(97∗333+98∗332+99∗33+100) % HASH_SIZE
= 3595978=3595978 % HASH_SIZE

其中HASH_SIZE表示哈希表的大小 (可以假设一个哈希表就是一个索引0 ~ HASH_SIZE - 1的数组)。

给出一个字符串作为 key 和一个哈希表的大小,返回这个字符串的哈希值。

0<=len(key)<=100000

示例:

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

题解:

99 * 333 + 98 * 332 + 97 * 33 + 96 * 1 = (((99 * 33) + 98) * 33 + 97) * 33 + 96

class Solution {
        public int hashCode(String key, int hASH_SIZE) {
            char[] keys = key.toCharArray();
            int n = keys.length - 1;

            int result = 0;
            for(int i=0; i<=n; i++) {
                result = (result * 33 + keys[i]) % hASH_SIZE;
            }

            return result;
        }
    }
posted @   言思宁  阅读(145)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示