1. 程式人生 > 其它 >leetcode - 3. 無重複字元的最長子串

leetcode - 3. 無重複字元的最長子串

技術標籤:力扣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; };