leetcode演算法題3:無重複字元的最長子串
阿新 • • 發佈:2018-11-24
題目:給定一個字串,請你找出其中不含有重複字元的 最長子串 的長度。
示例 1:輸入: "abcabcbb" 輸出: 3
解釋: 因為無重複字元的最長子串是 "abc",所以其
長度為 3。
示例 2:輸入: "bbbbb" 輸出: 1
解釋: 因為無重複字元的最長子串是 "b"
,所以其長度為 1。
示例 3:輸入: "pwwkew" 輸出: 3
解釋: 因為無重複字元的最長子串是 "wke"
,所以其長度為 3。 請注意,你的答案必須是 子串 的長度,"pwke"
是一個子序列,不是子串。
解析:
var lengthOfLongestSubstring = function(s) { var sArr = s.split(''); //將字串轉為陣列 if (sArr.length == 0) { return 0; } var resArr = [sArr[0]];//宣告新陣列,並將字串第一個值加入陣列中 var res = 1; var item; for (var i = 0; i < sArr.length; i++) { item = sArr[i]; var indexOf = resArr.indexOf(item); // 如果下一個字元包含在目前的字串中,就擷取已有字串中,從該字串後面的。 if (indexOf > -1) { resArr = resArr.splice(indexOf + 1); } resArr.push(item); res = resArr.length > res ? resArr.length : res; } return res; }; lengthOfLongestSubstring("abcabcabc");