LeetCode-无重复字符的最长字串

LeetCode刷题笔记

LeetCode题库:https://leetcode-cn.com/problemset/all/

无重复字符的最长字串

给定一个字符串,找出其最长无重复字符子串

// 使用 滑动窗口 思想
var lengthOfLongestSubstring = function(s) {
    var max = 0;
    var win = [];

    // 遍历字符串
    for (let i = 0; i < s.length; i++) {
        // 获取窗口内有相同的字符序号,没有则为 -1
        var order = win.indexOf(s[i]);
        // 将字符放入窗口
        win.push(s[i]);
        if (order !== -1) {
            // 存在相同字符,移除包括相同字符前的所有字符
            for (let j = 0; j <= order; j++) {
                win.shift();
            }
        }
        // 获取最大窗口长度
        max = max > win.length ? max : win.length;
    }

    return max;
};

console.log(lengthOfLongestSubstring('asoamsahd'));	// 3

执行结果

执行用时 内存消耗
120 ms 39.8 MB
posted @ 2021-05-31 13:54  陈嘉懿  阅读(30)  评论(0编辑  收藏  举报