Skip to main content

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.