当前位置: 首页 > article >正文

LeeCode前端算法基础100题(4)- 无重复字符的最长子串

一、问题详情:

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

示例 1:

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

示例 2:

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

示例 3:

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

二、我的答案:

/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function(s) {
    let maxLength = 0;
    let left = 0;
    const charMap = new Map(); // 用于记录字符的索引位置

    for (let right = 0; right < s.length; right++) {
        const currentChar = s[right];

        if (charMap.has(currentChar) && charMap.get(currentChar) >= left) {
        // 如果当前字符已经在窗口中出现过,并且在左指针之后
        left = charMap.get(currentChar) + 1; // 更新左指针的位置
        }

        charMap.set(currentChar, right); // 记录当前字符的索引位置
        maxLength = Math.max(maxLength, right - left + 1); // 更新最大长度
    }

    return maxLength;
};


http://www.kler.cn/a/146788.html

相关文章:

  • Proteus 8.17的详细安装教程
  • 麒麟时间同步搭建chrony服务器
  • 大学作业参考:网页设计作业 - 工作计划-Java SQL HTML源码下载
  • 什么是 C++ 中的友元函数和友元类?友元的作用是什么?有什么注意事项?
  • Web3浪潮下的区块链应用:从理论到实践的全面解析
  • JWT 过期后 自动刷新方案
  • 青少年CTF之PHP特性练习(1-5)
  • FlinkSql-Temporal Joins-Lookup Join
  • 基于官方YOLOv4-u5【yolov5风格实现】开发构建目标检测模型超详细实战教程【以自建缺陷检测数据集为例】
  • 力扣hot100 滑动窗口最大值 单调队列
  • C/C++ 常用加密与解密算法
  • 自己动手写编译器:golex 和 flex 比较研究 2
  • Java之面向对象《ATM自动取款机》
  • Arkts http数据请求
  • 每日一题--寻找重复数
  • opencv-python读取的图像分辨率太大不能完全显示
  • 优秀软件设计特征与原则
  • 买饮料问题
  • 【华为OD】B\C卷真题 100%通过:需要打开多少监控器 C/C++实现
  • java集合,ArrayList、LinkedList和Vector,多线程场景下如何使用 ArrayList
  • SQL Server:流程控制语言详解
  • leetcode 不同的二叉搜索树
  • java基础-运算符
  • virtualList 封装使用 虚拟列表 列表优化
  • 第四节HarmonyOS 熟知开发工具DevEco Studio
  • 深入解析:如何开发抖音票务小程序