1. 程式人生 > 其它 >阿里oss上傳工具函式

阿里oss上傳工具函式

雜湊函式

描述

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