14-1 哈希表基础 / Leetcode first uniq char

知识点:
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

}
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!