美文网首页
leetcode - 无重复字符的最长子串

leetcode - 无重复字符的最长子串

作者: 阿爽Alisa | 来源:发表于2018-11-12 22:55 被阅读4次

    问题描述:

    给定一个字符串,找出不含有重复字符的最长子串的长度。

    示例1:

    输入: "abcabcbb"
    输出: 3
    解释: 无重复字符的最长子串是 "abc",其长度为 3。

    示例 2:

    输入: "bbbbb"
    输出: 1
    解释: 无重复字符的最长子串是 "b",其长度为 1。

    示例 3:

    输入: "pwwkew"
    输出: 3
    解释: 无重复字符的最长子串是 "wke",其长度为 3。
    请注意,答案必须是一个子串,"pwke" 是一个子序列 而不是子串。

    方法1:
    代码

    /**
     * @param {string} s
     * @return {number}
     */
    var lengthOfLongestSubstring = function(s) {
        let len = s.length;
        if (len < 1) return len;
        let longest = 1;
        let curLen = 1;
        let subStart = 0;
        let charPos = {};
        charPos[s.charAt(0)] = 0;
        for (var i = 1; i < len; i++) {
            let char = s.charAt(i);
            let posCharPrev = charPos[char];
            if (posCharPrev !== undefined && posCharPrev >= subStart) {
                subStart = posCharPrev + 1;
                curLen = i - subStart + 1;
            } else {
                curLen++;
                if (curLen > longest) longest = curLen;
            }
            charPos[char] = i;
        }
        return longest;
    };
    
    

    相关文章

      网友评论

          本文标题:leetcode - 无重复字符的最长子串

          本文链接:https://www.haomeiwen.com/subject/dpmhfqtx.html