Leetcode 3.无重复字符的最长子串 JavaScript (Day 4)

js一刷法一(布尔集合)

javascript 复制代码
var lengthOfLongestSubstring = function (s) {
    let idx = new Set();
    let i = 0;
    let len = 0;

    for (let j = 0; j < s.length; j++) {


        while (idx.has(s[j])) {
            idx.delete(s[i]);
            i++;
        }

        idx.add(s[j]);
        len = Math.max(len, j - i + 1);
    }

    return len;
};

js一刷法二

javascript 复制代码
/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function (s) {
    let idx = new Map();
    let i = 0;
    let len = 0;

    for (let j = 0; j < s.length; j++) {


        while (idx.get(s[j])) {
            idx.set(s[i], idx.get(s[i]) - 1);
            i++;
        }

        idx.set(s[j], (idx.get(s[j]) ?? 0) + 1);
        len = Math.max(len, j - i + 1);
    }

    return len;
};

核心思想:滑动窗口
语法细节: (idx.get(s[j]) ?? 0),如果左边是false的话返回0,否则返回idx.get(s[j])

相关推荐
代码不停8 小时前
BFS解决floodfill算法题目练习
算法·宽度优先
上弦月-编程8 小时前
C语言指针从入门到实战
java·jvm·算法
WL_Aurora8 小时前
Python 算法基础篇之树和二叉树
python·算法
txzrxz8 小时前
关于前缀和
算法·动态规划·图论
Rkgua8 小时前
事件流模型是什么和DOM事件模型等关系
javascript
杨连江8 小时前
载流子矩阵限域束缚实现常温常压超导的理论与结构设计
算法
W.A委员会8 小时前
多行溢出在末尾添加省略号
开发语言·javascript·css
做cv的小昊9 小时前
【TJU】研究生应用统计学课程笔记(6)——第二章 参数估计(2.4 区间估计)
人工智能·笔记·线性代数·算法·机器学习·数学建模·概率论
普贤莲花9 小时前
【2026年第18周---写于20260501】---舍得
程序人生·算法·leetcode
2zcode9 小时前
基于深度学习的口腔疾病图像识别系统(UI界面+改进算法+数据集+训练代码)
人工智能·深度学习·算法