# 387 First Unique Character in a String

Given a string `s`, find the first non-repeating character in it and return its index. If it does not exist, return `-1`.

Example 1:

``````Input: s = "leetcode"
Output: 0
``````

Example 2:

``````Input: s = "loveleetcode"
Output: 2
``````

Example 3:

``````Input: s = "aabb"
Output: -1
``````

Constraints:

• 1 <= `s.length` <= 105
• `s` consists of only lowercase English letters.
 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 `````` ``````class Solution: def firstUniqChar(self, s: str) -> int: count = collections.Counter(s) for idx, ch in enumerate(s): if count[ch] == 1: return idx return -1 ''' Fast version ''' class Solution: def firstUniqChar(self, s: str) -> int: letters='abcdefghijklmnopqrstuvwxyz' index=[s.index(l) for l in letters if s.count(l) == 1] return min(index) if len(index) > 0 else -1``````
 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 `````` ``````func firstUniqChar(s string) int { m := make(map[rune]int) for _, c := range s { _, has := m[c] if has { m[c]++ } else { m[c] = 1 } } for i, c := range s { if m[c] == 1 { return i } } return -1 }``````