Typescript-Algorithms
    Preparing search index...

    Variable longest_substring_without_repeating_charactersConst

    longest_substring_without_repeating_characters: (s: string) => number = lengthOfLongestSubstring

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

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


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


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


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


    • 0 <= s.length <= 5 * 10^4
    • s 由英文字母、数字、符号和空格组成

    Type declaration

      • (s: string): number
      • Parameters

        • s: string

        Returns number

    function lengthOfLongestSubstring(s: string): number {
    const map = new Map<string, number>(); // 维护从下标 left 到下标 right 的字符
    let ans = 0;

    for (let l = 0, r = 0; r < s.length; r++) {
    map.set(s[r], (map.get(s[r]) ?? 0) + 1);

    while (map.get(s[r])! > 1) { // 窗口内有重复字母
    map.set(s[l], map.get(s[l])! - 1); // 移除窗口左端点字母
    l++; // 缩小窗口
    }

    ans = Math.max(ans, r - l + 1);
    }

    return ans;
    }