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
}
|