lintcode-哈希函數(shù)

在數(shù)據(jù)結(jié)構(gòu)中,哈希函數(shù)是用來(lái)將一個(gè)字符串(或任何其他類型)轉(zhuǎn)化為小于哈希表大小且大于等于零的整數(shù)。一個(gè)好的哈希函數(shù)可以盡可能少地產(chǎn)生沖突。一種廣泛使用的哈希函數(shù)算法是使用數(shù)值33,假設(shè)任何字符串都是基于33的一個(gè)大整數(shù),比如:
hashcode("abcd") = (ascii(a) * 333 + ascii(b) * 332 + ascii(c) 33 + ascii(d)) % HASH_SIZE
= (97
333 + 98 * 332 + 99 * 33 +100) % HASH_SIZE
= 3595978 % HASH_SIZE
其中HASH_SIZE表示哈希表的大小(可以假設(shè)一個(gè)哈希表就是一個(gè)索引0 ~ HASH_SIZE-1的數(shù)組)。
給出一個(gè)字符串作為key和一個(gè)哈希表的大小,返回這個(gè)字符串的哈希值。

class Solution {
public:
    /**
     * @param key: A String you should hash
     * @param HASH_SIZE: An integer
     * @return an integer
     */
    int hashCode(string key,int HASH_SIZE) {
        // write your code here
        int len = key.length();
        
        long sum = 0;
        for(int i = 0; i < len; ++i) {
            sum = sum*33%HASH_SIZE + (int)key[i];
        }
        
        return (int)(sum % HASH_SIZE);
    }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。 難度:容易 要求: 在數(shù)據(jù)結(jié)構(gòu)中,哈希函數(shù)是用來(lái)將一個(gè)字符串...
    柒黍閱讀 236評(píng)論 0 0
  • 在數(shù)據(jù)結(jié)構(gòu)中,哈希函數(shù)是用來(lái)將一個(gè)字符串(或任何其他類型)轉(zhuǎn)化為小于哈希表大小且大于等于零的整數(shù)。一個(gè)好的哈希函數(shù)...
    DayDayUpppppp閱讀 373評(píng)論 0 0
  • 題目 在數(shù)據(jù)結(jié)構(gòu)中,哈希函數(shù)是用來(lái)將一個(gè)字符串(或任何其他類型)轉(zhuǎn)化為小于哈希表大小且大于等于零的整數(shù)。一個(gè)好的哈...
    六尺帳篷閱讀 373評(píng)論 0 1
  • 【題目描述】 In data structure Hash, hash function is used to c...
    程風(fēng)破浪會(huì)有時(shí)閱讀 354評(píng)論 0 0
  • 一個(gè)小小的手術(shù)把我折騰的五零四散,手術(shù)第二天出院,滿懷欣喜的回到家,兩天滴水未進(jìn),回家看著冰涼的灶臺(tái),如果父親你還...
    緣來(lái)你在那里閱讀 267評(píng)論 0 0