1. 程式人生 > >leetcode演算法題3:無重複字元的最長子串

leetcode演算法題3:無重複字元的最長子串

題目:給定一個字串,請你找出其中不含有重複字元的 最長子串 的長度。

示例 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");