首页 > 其他分享 >3. 无重复字符的最长子串(中)

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

时间:2024-10-28 14:31:46浏览次数:1  
标签:子串 字符 Set 窗口 max 最长 指针

目录

题目

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

示例 1:

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

示例 2:

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

题解:滑动窗口

  • 思路:使用js的Set存不重复的子串,左右指针刚开始指向字符串开头,右指针逐个往后移,当右指针的元素不在Set中就加入,并更新最大长度;如果右指针的元素在Set中:在Set中移除i的元素,i++,一直到j所指的元素可以放进Set。
var lengthOfLongestSubstring = function(s) {
    if (s.length === 0) {
        return 0;
    }
    let max = 0;
    let i = 0; // 左指针
    let j = 0; // 右指针
    const charSet = new Set(); // 用于存储当前窗口的字符
    while (j < s.length) {
        if (!charSet.has(s[j])) {
            // 当前字符不在窗口内,移动 j 指针
            charSet.add(s[j]);//添加元素到窗口
            max = Math.max(max, j - i + 1); // 更新最大长度
            j++;
        } else {
            // 当前字符在窗口内,删除i指针的元素,直到j指针元素可以放进窗口内
            charSet.delete(s[i]);
            i++;//移动 i 指针
        }
    }
    return max;
};

标签:子串,字符,Set,窗口,max,最长,指针
From: https://www.cnblogs.com/lushuang55/p/18510553

相关文章

  • 《练习题010:字符的各种练习(9种)》
    ------------------------------------【目录】------------------------------------------01:字符串构成02:字母识词03:列表转字符串04:随机数05:按位与、或、异或06:位取反、位移动07:字符串长度08:查找字符串09:列表转字典----------------------------------------------......
  • 字符串划分方法汇总
    基本的split()方法split()按照指定分隔符将字符串分割成一个列表。如果不指定分隔符,默认使用空格。text="applebananaorange"result=text.split()#默认按空格分割,结果:['apple','banana','orange']​text="apple,banana,orange"result=text.spl......
  • 一文带你搞懂Java字符串
    1.API1.1API概述什么是API?API(ApplicationProgrammingInterface)是应用程序编程接口,它是一组工具、类、方法和规则,使不同的应用程序可以通过接口进行数据交互和操作。API的作用主要是:封装复杂性:提供简单的接口供开发者调用,不需要关心底层实现的细节。提高复用......
  • 字符串谁更快?String vs StringBuilder大比拼
    在Java中处理字符串,String和StringBuilder都是常用的类,它们的区别有点像在厨房里选择不同的工具:String就像是一把只能用一次的纸杯,改一次就得换新的;而StringBuilder就像一只可以反复使用的水杯,随时可以修改。这两个类各有优缺点,咱们一起来看看它们的区别和用法吧。String......
  • 格式化字符串漏洞沉浸式理解
    格式化字符串漏洞总结利用的是2024shctf中的fmt_fmt开启pie放到ida中看看反汇编mian函数无条件循环,根据输入的值不同调用不同的函数show_flag函数这个函数会将dest中的内容打印出来,这里就有格式化字符串漏洞,如果能够修改ptr指针的话就能控制dest的内容,那这样就可以......
  • IT软件部落-Emoji表情字符大全增强你的表达能力-记事本也可以有情感,总有一个您用得上,
    这是手绘的吗?不,它是Emoji表情字符,就是普通的文本,你不相信? ......
  • P3370 【模板】字符串哈希
    【模板】字符串哈希题目描述如题,给定NNN个字符串(第iii个字符......
  • 字符串
    练习:编写函数把一个数组里所有存储区的内容前后颠倒,假设数组里原有内容是12345,颠倒后的内容是54321#if1/**数组内容颠倒***/#include<stdio.h>int*func(int*p_num,intsize){ int*p_start=p_num,*p_end=p_num+size-1; inttmp=0; while(p_sta......
  • 计算机如何储存数字和字符,与各种进制的本质,与ASCII码
    前言        我想问大家一个问题:二进制、八进制、十进制、十六进制究竟是计算机中才有的概念,还是可以脱离计算机仅仅作为数学概念而独立存在呢?    答案是后者,如果你不曾想过这个问题,你也就大概不能十分清晰的理解计算机对于数字与字符的存储。    ......
  • 【Orange Pi 5 Linux 5.x 内核编程】-字符设备文件操作实现
    字符设备文件与操作(具体实现)文章目录字符设备文件与操作(具体实现)1、内核空间程序(设备驱动)1.1kmalloc()1.2kfree()1.3copy_from_user()1.4copy_to_user()1.5open操作实现1.6write操作实现1.7read操作实现1.8close操作2、用户空间应用程序......