无重复字符的最长子串

59 阅读1分钟
/*
 * @lc app=leetcode.cn id=3 lang=javascript
 *
 * [3] 无重复字符的最长子串
 */

// @lc code=start
/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function(s) {
  // 创建一个set存字符串
  const set = new Set()
  //定义俩个指针和一个记录长度
  let i=0,j=0,maxlength=0
  // 先判断字符串是不是0
  if(s.length===0){
    return 0
  }
  
  for (let i = 0; i < s.length; i++) {
    if(!set.has(s[i])){//没有对应的字符就存到set里面
      set.add(s[i])
      // 比较set的长度和maxlength
      maxlength = Math.max(maxlength,set.size)
    }else{
      while(set.has(s[i])){//如果有改字符串就删除set里面的元素,直到没有该元素,再把该元素追加到set里面
        set.delete(s[j])
        j++
      }
      set.add(s[i])
    }
    
  }
  // 最终返回maxklength
  return maxlength
};
// @lc code=end