Skip to content

Latest commit

 

History

History
58 lines (42 loc) · 1022 Bytes

387. 字符串中的第一个唯一字符.md

File metadata and controls

58 lines (42 loc) · 1022 Bytes

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。

示例:

s = "leetcode"
返回 0

s = "loveleetcode"
返回 2

**提示:**你可以假定该字符串只包含小写字母。

思路

用map存储第一次出现时候的index,然后遍历map找到第一个只出现1次的字符

代码

/**
 * @param {string} s
 * @return {number}
 */
var firstUniqChar = function(s) {
  let obj = {};
  for(let i = 0; i < s.length; i ++) {
    let cur = s[i];
    if (!obj[cur]) {
      obj[cur] = {
        index: i,
        count: 1
      }
    } else {
      obj[cur].count += 1;
    }
  }
  for(let [key, {index, count}] of Object.entries(obj)) {
    if (count === 1) {
      return index
    }
  }
  return -1;
};

复杂度分析

时间复杂度 $O(N)$

空间复杂度 $O(N)$