ELFHash字串Hash演算法

2021-08-01 11:47:38 字數 1250 閱讀 5302

字串hash無論是在acm競賽中還是在工程中都有著廣泛的應用,所以很有必要掌握好它的用法。主要分為兩個部

分:hash對映衝突處理。而本文主要來詳細講解hash對映的方法及應用,下篇文章將會介紹如何處理衝突。

對於字串hash來說都是把字串對映為乙個整數,這一步是通過hash函式來進行的。常用的hash函式具體有:

sdbmhash,rshash,jshash,elfhash,bkdrhash,djbhash等等。

接下來只詳細介紹elfhash函式的原理

及應用。

elfhash函式的**如下

unsigned int elfhash(char *str)  

} return h & 0x7fffffff;

}

接下來我會詳細**它的原理。

(1)h = (h << 4) + *str++;  把當前的字元的ascii存入h的低4位。

(2)x = h & 0xf0000000l;    取出h中最高4位,0xf0000000l地代表28~314位是1,其餘後28位是0

(3)如果最高4位不為0,那麼說明字元多於7個,現在正在存第8個,如果不處理再加下乙個字元時,第乙個字元會

被移出,因為1~4位剛剛加入了新字元,所以不能>>28,而是>>24

(4)h &= ~x;                表示把h的高4位清零。

MyCat分片規則之字串hash解析演算法分片

字串hash解析分片,其實就是根據配置的hash預算位規則,將擷取的字串進行hash計算後,得到的int數值即為datanode index 分片節點索引,從0開始 實現步驟 a 建立資料庫和表 b 配置server.xml c rule.xml配置分片規則 d schema.xml配置分片節點 分...

Hash 字串 字串雜湊

luo gu luogu luogup 3370 p3370 p337 0如題,給定n個字串 第i個字串長度為mi,字串內包含數字 大小寫字母 請求出n個字串中共有多少個不同的字串。第一行包含乙個整數n,為字串的個數。接下來n行每行包含乙個字串,為所提供的字串。輸出包含一行,包含乙個整數,為不同的字...

白兔的字串 字串hash

原題 一道典型的字串hash,至於hash,這裡講的非常好。一開始用map函式一直超時,後來改用unordered map就過了,至於這2個map的區別,這裡講的挺清楚的。之後去查了一下其它方法,發現還有一種方法是手寫map函式 強 指明 大佬 unordered map是跑了600ms,重寫跑了1...