Golang | Leetcode Golang题解之第387题字符串中的第一个唯一字符
题目:
题解:
type pair struct {
ch byte
pos int
}
func firstUniqChar(s string) int {
n := len(s)
pos := [26]int{}
for i := range pos[:] {
pos[i] = n
}
q := []pair{}
for i := range s {
ch := s[i] - 'a'
if pos[ch] == n {
pos[ch] = i
q = append(q, pair{ch, i})
} else {
pos[ch] = n + 1
for len(q) > 0 && pos[q[0].ch] == n+1 {
q = q[1:]
}
}
}
if len(q) > 0 {
return q[0].pos
}
return -1
}