js-challenges icon indicating copy to clipboard operation
js-challenges copied to clipboard

无重复字符的最长子串

Open lzxjack opened this issue 2 years ago • 3 comments

lzxjack avatar Jan 11 '23 07:01 lzxjack

function lengthOfLongestSubstring(s: string): number {
  let i=0,j=0,max=0;
  let set:Set<string>=new Set();
  while(j<s.length){
    if(!set.has(s[j])){
      set.add(s[j]);
      if(set.size>max)max=set.size;
      ++j;
    }else{
      while(set.has(s[j])){
        set.delete(s[i++]);
      }
      set.add(s[j]);
      ++j;
    }
  }
  return max;
};

1584965284 avatar Jan 23 '23 00:01 1584965284

var lengthOfLongestSubstring = function(s) {

    let map = new Map(); let max = 0;

    for(let i=0,j=0; j<s.length ; j++)

    {

        if(map.has(s[j])){

            i = Math.max(map.get(s[j])+1,i) 

        }

        max = Math.max(max,j-i+1)//关键,j-i+1

        map.set(s[j],j)

    }

    return max;

};

OLDLAI avatar Mar 25 '23 07:03 OLDLAI

滑动窗口
var lengthOfLongestSubstring = function (s) {
    let map = new Set()
    let left = 0
    let ans = 0
    for (let right = 0; right < s.length; right++) {
        while (map.has(s[right])) {
            map.delete(s[left]) //注意,这里是删除s[left]
            left++
        }
        map.add(s[right])
        ans = Math.max(ans, right - left + 1)
    }
    return ans
};

dizao006 avatar Oct 14 '24 08:10 dizao006