leetcode 题目
题目描述:
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
思路:分别将s 的每个字母作为起始字母,同时用另一个变量记录第一次重复的位置,不重复就添加进set,重复就记录 maxlength 同时删除起始字母(这样就是下一个字母作为起始字母了)。最后返回 maxlength
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function(s) {
let j=0;
let son = new Set();
let maxLength = 0;
//i记录起始位置,j记录重复位置
for (let i =0;i<s.length;i++){
while(!son.has(s[j])&&j<s.length){
son.add(s[j]);
j++;
}
//当长度小于 set 的大小时更新 maxlength
if(maxLength<son.size)
maxLength = son.size;
son.delete(s[i]);
}
return maxLength;
};