Problem
First Unique Character in a String
Given a string, find the first non-repeating character in it and return it's index. If it doesn't exist, return -1
.
Examples:
s = "leetcode"
return 0.
s = "loveleetcode",
return 2.
Note: You may assume the string contain only lowercase letters.
Solution
Count appearance of each character and save in hash table
One more loop to find first count = 1
class Solution {
func firstUniqChar(_ s: String) -> Int {
var arr = Array(s)
var search = [Character: Int]()
for c in arr {
search[c] = (search[c] ?? 0) + 1
}
for i in 0..<arr.count {
if search[arr[i]] == 1 {
return i
}
}
return -1
}
}
With the constraint lowercase letters, we can optimize by using an array instead of hashtable. The array length is equal two 26.