算法复习-队列

2021-06-08 14:56:292021-06-08 22:56:34

⽆重复字符的最⻓⼦串

function lengthOfLongestSubstring(s) {
  if (s === '') return 0;
  if (s.length === 1) return 1;
  let longestStr = '';
  const queue = new Map();
  for (let i = 0; i < s.length; i += 1) {
    if (queue.has(s[i])) {
      const newStr = Array.from(queue.keys()).join('');
      longestStr = newStr.length > longestStr.length ? newStr : longestStr;
      i = queue.get(s[i]) + 1;
      queue.clear();
    }
    queue.set(s[i], i);
  }

  const newStr = Array.from(queue.keys()).join('');
  return Math.max(newStr.length, longestStr.length);
}