387. First Unique Character in a String

Leetcode

https://leetcode.com/problems/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.

解答

  • 方法一

利用 map 來存儲遍歷過的元素,如果未遍歷過的值就設成 index,遍歷過的設為 -1,最後抓出第一個不等於 -1 的 index。

注意:這裡利用 map 儲存元素是為了保證 order 次序是由前到後加入的,如果用 object 話沒辦法保證次序是對的。

var firstUniqChar = function(s) {
    const map = new Map();
    
    for(let i=0; i<s.length; i++) {
        const char = s[i];
        if(map.get(char) === undefined) {
          map.set(char, i);
        } else {
          map.set(char, -1);
        }
    }
    
    for (const value of map.values()) {
      if(value !== -1) return value;
    }
    return -1;
};

Runtime: 145 ms, faster than 39.62% of JavaScript online submissions for First Unique Character in a String.

Memory Usage: 42.1 MB, less than 65.41% of JavaScript online submissions for First Unique Character in a String.

測資

let s = "leetcode";
s = "loveleetcode";
s = "aabb";

console.log(firstUniqChar(s));

Last updated

Was this helpful?