#3 Longest Substring Without Repeating Characters

寻找字符串中无重复字母的最长字串,使用2个指针移动,当右指针找到hash表中重复的字幕时,讲左指针移动到表中记录位置的下一位,并更新表中数据为右指针位置,更新最大长度,复杂度为O(n)

var lengthOfLongestSubstring = function(s) {
    var longest = 0,p1 = 0,p2 = 0,len = s.length,hash = {};
    if(len === 1)
        return 1;
    while (p2 < len) {
        if (hash[s[p2]] !== undefined) {
            longest = Math.max(longest, p2-p1);
            p1 = Math.max(hash[s[p2]] + 1, p1);
        }
        hash[s[p2]] = p2++;
    }
    if(longest === 0) {
        return len;
    }
    longest = Math.max(longest, len - p1);
    return longest;
};

你可能感兴趣的:(#3 Longest Substring Without Repeating Characters)