題目描述: 無重復字符的最長子串
- 給定一個字串,請你找出其中不含有重復字符的 最長子串 的長度,
示例 1:
輸入: s = "abcabcbb"
輸出: 3
解釋: 因為無重復字符的最長子串是 "abc",所以其長度為 3,
示例 2:
輸入: s = "bbbbb"
輸出: 1
解釋: 因為無重復字符的最長子串是 "b",所以其長度為 1,
示例 3:
輸入: s = "pwwkew"
輸出: 3
解釋: 因為無重復字符的最長子串是 "wke",所以其長度為 3,
請注意,你的答案必須是 子串 的長度,"pwke" 是一個子序列,不是子串,
示例 4:
輸入: s = ""
輸出: 0
解法一
- 代碼實作:
var lengthOfLongestSubstring = function(s) {
//遍歷字串,判斷字符是否在滑動視窗陣列里
let arr = [], max = 0
for(let i = 0; i < s.length; i++) {
let index = arr.indexOf(s[i])
if(index !== -1) {
//在則洗掉滑動視窗陣列里相同字符及相同字符前的字符,然后將當前字符 push 進陣列
arr.splice(0, index+1);
}
//不在則 push 進陣列
arr.push(s.charAt(i))
max = Math.max(arr.length, max)
}
//然后將 max 更新為當前最長子串的長度
return max
};
- 解法2:
var lengthOfLongestSubstring = function(s) {
let i=0, res=0, n=0;
for (let j = 0; j < s.length; j++){
n = s.slice(i,j).indexOf(s[j])
if (n == -1){
res = Math.max(res,j+1-i);
}else{
i += n+1;
}
}
return res;
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/266683.html
標籤:其他
