First Unique Character in a String
Problem
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.
Solution
/**
* @param {string} s
* @return {number}
*/
var firstUniqChar = function(s) {
let map = {};
for (let c of s) {
if (c in map) {
map[c] = true;
} else {
map[c] = false;
}
}
for (let i = 0; i < s.length; ++i) {
if (!map[s[i]]) {
return i;
}
}
return - 1;
};
Iterate through s
and keep track of if a character has appeared before using map
(true
if a character has appeared multiple times and false
if it appeared once). Next, iterate through s
again and return the index of the first character where its entry in map
is false
.