387 字符串中的第一个唯一字符

题目:

给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1

分析:

利用 map 存储字符出现的次数,如果首次出现,map 值为下标索引,否则为 -1。

然后,对 map 进行遍历找最小值。

// date 2023/11/30
func firstUniqChar(s string) int {
    chSet := make(map[rune]int, 32)
    for i, c := range s {
        _, ok := chSet[c]
        if ok {
            chSet[c] = -1
        } else {
            chSet[c] = i
        }
    }
    ans := len(s)
    for _, v:= range chSet {
        if v != -1 && v < ans {
            ans = v
        }
    }
    if ans == len(s) {
        return -1
    }
    return ans
}

最后更新于