我的js算法爬坑之旅-字符串中的第一个唯一字符

107 阅读1分钟

第七十七天:力扣387题,字符串中的第一个唯一字符

地址:leetcode-cn.com/problems/fi…

思路:用lastIndexOf来判断此后是否唯一,用set来判断此前是否唯一。

var firstUniqChar = function(s) {
  const m = s.length;
  let set = new Set();
  for(let i = 0; i < m ; i++)
  {
    if(s.lastIndexOf(s[i]) === i && !set.has(s[i]))//两个索引值相同说明此后唯一,set中has不存在说明此前唯一
    {
      return i;
    }
    set.add(s[i]);
  }
  return -1
};

执行用时:124 ms, 在所有 JavaScript 提交中击败了65.29%的用户

内存消耗:41.4 MB, 在所有 JavaScript 提交中击败了34.01%的用户

后来看看,好像想多了

var firstUniqChar = function(s) {
  const m = s.length;
  for(let i = 0; i < m ; i++)
  {
    if(s.lastIndexOf(s[i]) === s.indexOf(s[i]))
    {
      return i;
    }
  }
  return -1
};

执行用时:116 ms, 在所有 JavaScript 提交中击败了81.25%的用户

内存消耗:41.2 MB, 在所有 JavaScript 提交中击败了49.21%的用户