给定一个字符串 s,求不重复字符的最长子串的长度

sd_*_*_30 0 javascript algorithm

示例输入:s = "abcabcbb" 输出:3 解释:答案是“abc”,长度为 3。我试着写这个,但如果条件永远不会被执行。我无法弄清楚原因。

var lengthOfLongestSubstring = function(s) {
 let set = new Set();
    let c =0;
    for(let i =0; i< s.length; i++){
        if(set.has(s[i])){
            set.size =0;
        }
        else {
            console.log(c)
            c++;
        }
    }
    return c;
}; 
console.log(lengthOfLongestSubstring("abcabcbb"))
Run Code Online (Sandbox Code Playgroud)

dan*_*ong 8

你可以试试这个:

var lengthOfLongestSubstring = function (s) {
  let res = 0;
  let set = new Set();
  let i = 0;
  let j = 0;
  while (i < s.length && j < s.length) {
    if (!set.has(s[j])) {
      set.add(s[j]);
      j++;
      if (j - i > res) res = j - i;
    } else {
      set.delete(s[i]);
      i++;
    }
  }
  return res;
};
Run Code Online (Sandbox Code Playgroud)