題目
給定一個(gè)字符串杉允,請(qǐng)你找出其中不含有重復(fù)字符的 最長(zhǎng)子串 的長(zhǎng)度终蒂。
示例 1:
輸入: s = "abcabcbb"
輸出: 3
解釋: 因?yàn)闊o重復(fù)字符的最長(zhǎng)子串是 "abc",所以其長(zhǎng)度為 3签则。
示例 2:
輸入: s = "bbbbb"
輸出: 1
解釋: 因?yàn)闊o重復(fù)字符的最長(zhǎng)子串是 "b",所以其長(zhǎng)度為 1铐料。
示例 3:
輸入: s = "pwwkew"
輸出: 3
解釋: 因?yàn)闊o重復(fù)字符的最長(zhǎng)子串是 "wke"渐裂,所以其長(zhǎng)度為 3。
請(qǐng)注意钠惩,你的答案必須是 子串 的長(zhǎng)度柒凉,"pwke" 是一個(gè)子序列,不是子串篓跛。
示例 4:
輸入: s = ""
輸出: 0
題解
雙指針:
1.子串中含有重復(fù)字符膝捞,左指針移動(dòng)
2.字串中不含有重復(fù)字符, 右指針移動(dòng)
str存放當(dāng)前選中的子串愧沟,resultStr始終儲(chǔ)存最大值
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function(s) {
let left = 0;
let right = 0;
let resultLen = 0;
let str = '';
if(s.length <= 1) {
return s.length;
}
while(s.length > right) {
if(str.indexOf(s[right]) == -1){
right++;
} else {
left++;
}
str = s.slice(left,right);
if(resultLen < str.length) {
resultLen = str.length;
}
}
return resultLen;
};