14-1 雜湊表基礎 / Leetcode first uniq char

twisted-fate發表於2019-06-16

知識點:
1 將 a-z 字幕的 ascii 碼出現次數對映到 0-25 的陣列中 , 雜湊函式 f(char)=char-'a' O(1) , 鍵轉換為索引
2 26 個字幕和 1-30 學號這樣的雜湊函式很容易能找到一一對應的索引 , 但是身份證,字串,浮點數,日期卻不能 , 可能是多對一 , 因而產生雜湊衝突
3 雜湊表的設計思想: 空間換時間 , 假如1101819851216666 的身份證 , 可以開闢無限大的 99999999999999 的陣列,則可以用 O(1)的時間執行任意操作 , 假如只有 1 的空間, 則只能類似連結串列(線性表) , O(n)的時間操作

func firstUniqChar(s string) int {
    /*
    make a arr , map 0-25 as a-z
     */
    arr:=[26]int{}

    for _,v:=range s {
            arr[v-'a']++

    }

    for k,v:=range s {
        if arr[v-'a']==1 {
            return k
        }
    }
    return -1

}

相關文章