387.first-unique-character-in-a-string.go 300 B

1234567891011121314151617
  1. func firstUniqChar(s string) int {
  2. m := make(map[rune]int)
  3. cnt := make([]int, 256)
  4. for i, r := range s {
  5. if _, ok := m[r]; !ok {
  6. m[r] = i
  7. }
  8. cnt[r]++
  9. }
  10. idx := -1
  11. for i := 'a'; i <= 'z'; i++ {
  12. if val := m[i]; cnt[i] == 1 && (idx == -1 || val < idx) {
  13. idx = val
  14. }
  15. }
  16. return idx
  17. }