leetcode - 3. 無重複字元的最長子串
阿新 • • 發佈:2021-02-05
技術標籤:力扣leetcode演算法字串javascript
給定一個字串,請你找出其中不含有重複字元的 最長子串 的長度。
示例 :
輸入: s = “abcabcbb”
輸出: 3
解釋: 因為無重複字元的最長子串是 “abc”,所以其長度為 3。
方法:
維護陣列
思路:
遍歷字串,如果字元不在陣列中,就將當前字元push到陣列,計算max的最大值;反之,刪除陣列中重複元素之前的所有元素(包括重複元素),並將字串中當前字元push到陣列中,重新計算max最大值,直至遍歷完成。
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function(s) {
let arr = [], max = 0;
for(let i=0; i<s.length; i++) {
if(arr.indexOf(s[i]) !== -1){ // 判斷陣列中是否存在當前字元
arr.splice(0,arr.indexOf(s[i])+1); // 存在刪除本身及之前元素
}
arr.push(s.charAt(i)); // 將字元push到陣列
max = Math.max(arr.length,max); //計算max大小,記錄最大值
}
return max;
};