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

https://leetcode.cn/problems/longest-substring-without-repeating-characters/
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

思路:滑动窗口
对字符串进行遍历,并准备一个指针指向最开始,如果字符串中出现重复的字符,那么需要将指针往前移,找到该重复字符出现的第一个位置,从此处再次开始计算长度。

var lengthOfLongestSubstring = function(s) {
    let arr = s.split('');
    let result = 0;
    let j = 0;
    let map = new Map();
    for (let i = 0; i < arr.length; i++) {
        if(map.has(arr[i])) {
            while(map.has(arr[i])) {
                map.delete(arr[j])
                j++;
            }
            map.set(arr[i], i);
        } else {
            map.set(arr[i], i);
            result = Math.max(result, map.size);
        }
    }
    return result;
};

你可能感兴趣的:(leetCode刷题,leetcode,算法,职场和发展)