给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
解法1:
var lengthOfLongestSubstring = (s) => {
if (typeof s != "string") {
return;
}
let r = 0;
let str = "";
let maxLen = 0;
while (r < s.length) {
const index = str.indexOf(s[r]);
if (index === -1) {
str += s[r];
} else {
str = str.slice(index + 1) + s[r];
}
r++;
maxLen = Math.max(maxLen, str.length);
}
// return Math.max(maxLen, str.length);
return maxLen;
};
解法2:
var lengthOfLongestSubstring = (s) => {
if (typeof s != "string") {
return;
}
let l = 0,
r = 0,
maxLen = 0;
const set = new Set();
while (r < s.length) {
if (!set.has(s[r])) {
set.add(s[r++]);
maxLen = Math.max(maxLen, r - l);
} else {
set.delete(s[l++]);
}
}
return maxLen;
};