阿里oss上傳工具函式
阿新 • • 發佈:2022-05-13
雜湊函式
描述
在資料結構中,雜湊函式是用來將一個字串(或任何其他型別)轉化為小於雜湊表大小且大於等於零的整數。一個好的雜湊函式可以儘可能少地產生衝突。一種廣泛使用的雜湊函式演算法是使用數值 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; } }