LeetCode:3. 无重复字符的最长子串

题目

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

示例 1:

输入: s = “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2:

输入: s = “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: s = “pwwkew” 输出: 3

示例 4: 输入: s = “” 输出: 0

提示: 0 <= s.length <= 5 * 104 s 由英文字母、数字、符号和空格组成

题解

代码

/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function(s) {
    let start = 0,end = 0;
    let mp = new Map();
    let ans = 0;
    while(end<s.length)
    {
        
        let pos = mp.get(s[end]);
        if(mp.has(s[end])&&pos>=start)
        {
            start = mp.get(s[end])+1;
        }
        mp.set(s[end],end);
        ans = Math.max(ans,end-start+1);
        end++;
    }
    return ans;
};
经验分享 程序员 微信小程序 职场和发展