LeetCode刷题日志#3:无重复字符的最长子串

题目: 传送门
类别:字符串
难度:中等

简单一题。

/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function(s) {
  let largestLen = 0;
  let uniqueArr = [];
  
  for (let i = 0, len = s.length; i < len; i += 1) {
    const currentChar = s[i];
    
    const lastIndex = uniqueArr.indexOf(currentChar);
    if (lastIndex > -1) {
      uniqueArr = uniqueArr.slice(lastIndex + 1);
    }
    uniqueArr.push(currentChar);
    
    const uniqueArrLen = uniqueArr.length;
    if (uniqueArrLen > largestLen) {
      largestLen = uniqueArrLen; 
    } else {
      // 优化:提前结束
      if (largestLen >= uniqueArrLen + len - i) {
        return largestLen;
      }
    }
  }
  
  return largestLen;
};

发现,如果 uniqueArr 改为字符串还会更快,内存消耗更小点。

你可能感兴趣的:(leetcode,字符串)