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

news2024/11/26 21:27:41

🌈🌈😄😄

欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 3. 无重复字符的最长子串,做好准备了么,那么开始吧。

🌲🌲🐴🐴

目录

一、题目名称

二、题目要求

三、相应举例

四、限制要求

五、解决办法

滑动窗口

题目要点

六、代码实现


一、题目名称

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

二、题目要求

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

三、相应举例

示例 1:

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

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

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

四、限制要求

  • 0 <= s.length <= 5 * 104
  • s 由英文字母、数字、符号和空格组成

五、解决办法

滑动窗口

  • 我们使用两个指针表示字符串中的某个子串(或窗口)的左右边界,其中左指针代表着上文中「枚举子串的起始位置」,而右指针即为右边界。
  • 在每一步的操作中,我们会将左指针向右移动一格,表示 我们开始枚举下一个字符作为起始位置,然后我们可以不断地向右移动右指针,但需要保证这两个指针对应的子串中没有重复的字符。在移动结束后,这个子串就对应着 以左指针开始的,不包含重复字符的最长子串。我们记录下这个子串的长度;
  • 在枚举结束后,我们找到的最长的子串的长度即为答案。

题目要点

本题利用哈希集合来实现,保证没有重复元素。

remove()表示删除某一字母或字符串

contains()表示该哈希表中包含字母或字符串

add()表示添加某一字母或字符串

s.charAt(i)表示某字符串根据索引确定某一字母,s为字符串

Math.max(a,b)表示a与b最大值

六、代码实现

class Solution {
    public int lengthOfLongestSubstring(String s) {
        // 哈希集合,记录每个字符是否出现过
        Set<Character> occ = new HashSet<Character>();
        int n = s.length();
        // 右指针,初始值为 -1,相当于我们在字符串的左边界的左侧,还没有开始移动
        int rk = -1, ans = 0;
        for (int i = 0; i < n; ++i) {
            if (i != 0) {
                // 左指针向右移动一格,移除一个字符
                occ.remove(s.charAt(i - 1));
            }
            while (rk + 1 < n && !occ.contains(s.charAt(rk + 1))) {
                // 不断地移动右指针
                occ.add(s.charAt(rk + 1));
                ++rk;
            }
            // 第 i 到 rk 个字符是一个极长的无重复字符子串
            ans = Math.max(ans, rk - i + 1);
        }
        return ans;
    }
}

或者

class Solution {
    public int lengthOfLongestSubstring(String s) {
        Set<Character> set=new HashSet<>();
        int n=s.length();
        int i=0,j=0,ans=0;//定义左右指针
        while(j<n){

            while(j<n&&!set.contains(s.charAt(j))){
                set.add(s.charAt(j));//添加字母
                j++;//移动右指针
            }

            ans=Math.max(ans,j-i);
            
            while(j<n&&set.contains(s.charAt(j))){
                set.remove(s.charAt(i));//删除字母
                i++;//移动左指针
            }
                
        }
        return ans;

           
    }
}

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/153700.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(02)Cartographer源码无死角解析-(48) 2D点云扫描匹配→暴力搜索匹配原理讲解,扫面匹配总体框架梳理

讲解关于slam一系列文章汇总链接:史上最全slam从零开始&#xff0c;针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解&#xff1a;https://blog.csdn.net/weixin_43013761/article/details/127350885 文末…

2022消费市场并未降级?麦肯锡调研报告解读

近日全球知名咨询公司麦肯锡发布《2023中国消费者报告》&#xff0c;重磅发布重塑中国消费市场的五大趋势。 趋势一&#xff1a;中等收入人群继续壮大 MGI数据显示&#xff0c;2019~2021年&#xff0c;年收入超过16万元人民币&#xff08;2.18万美元&#xff09;的中国城镇家…

nacos配置动态刷新及监听到变化触发一些方法

介绍在使用spring 时&#xff0c;动态更新配置是常见的&#xff0c;属性值更新&#xff0c;但是需要开启支持刷新功能&#xff0c;一个是spring.cloud.nacos.config.isRefreshEnabledtrue; 这个值一般是默认的&#xff0c;可以在nacosConfigProperties这个类中看到。还要在扩展…

【C++】list介绍及使用模拟实现对比vector

文章目录1. list的介绍及使用1.1 list的介绍1.2 list的使用1.2.1 list的构造1.2.2 list iterator以及insert和erase的使用1.2.3 list的迭代器失效2. list的模拟实现2.1 模拟实现list3.&#xff08;本文精华&#xff09;list与vector的对比1. list的介绍及使用 1.1 list的介绍 …

图像识别AI程序(数据集管理/训练/预测)

出于对Python中AI智能识别程序的兴趣&#xff0c;对照AI智能识别程序应该具有的主要功能&#xff1a;数据集管理&#xff08;加载/移除/重命名&#xff09;、模型训练&#xff08;可实时监测训练进度、最终训练参数输出&#xff09;、模型预测&#xff0c;使用Python/Keras编制…

open-local本地存储使用

Open-local使用指南架构组成1. scheduler-extender&#xff1a; 作为 kube-scheduler 的扩展组件&#xff0c;通过 Extender 方式实现&#xff0c;扩展了原生调度器对本地存储资源的感知&#xff0c;以实现对包括磁盘容量、多盘感知、磁盘介质&#xff08;ssd or hdd&#xff0…

数据分析-深度学习Day5

Backpropagation反向传播我们上节课学习了深度学习&#xff0c;也知道采用梯度下降优化我们的各神经元参数&#xff0c;以语音识别为例&#xff0c;一个输入特征量1000多项&#xff0c;8层隐层&#xff0c;大致需要的w,b参数有数百万项&#xff0c;这样我们梯度下降的计算量是非…

记一次部署在docker环境项目发送邮件出现No appropriate protocol

前言 部门有个项目涉及到邮件发送&#xff0c;发送功能在本地测试可以成功发送&#xff0c;但是打包部署到docker环境中&#xff0c;却出现 No appropriate protocol (protocol is disabled or cipher suites are inappropriate)后面在网上搜索了一下&#xff0c;查到了这篇文…

技术分享 | 测试平台开发-前端开发之Vue.js 框架的使用

首先将 Vue.js 下载到本地&#xff0c;本章就以本地的 Vue.js 为例。在本地创建一个工作区即创建一个文件夹&#xff0c;使用 vscode 打开&#xff0c;将 Vue.js 放到工作区目录下。 创建挂载元素 首先创建一个 index.html 的文件&#xff0c;使用 加载 vue.js&#xff0c;这…

NAT模式虚拟机能ping通宿主机但是telnet不通 教你如何设置网关走出误区

今天跟大家聊聊如何正确配置NAT模式下虚拟机的网关。 如标题所言&#xff0c;我一开始在设置网关的时候一直存在着误区&#xff0c;而这个误区也导致标题中的问题&#xff1a;虚拟机能ping通宿主机&#xff0c;但是telnet不通&#xff0c;这就很奇葩了。 如下网络拓扑图。 虚…

Linux ALSA 之五:ALSA Proc Info

ALSA Proc Info一、概述二、Proc Files of Alsa Driver1、/proc/asound/xxx 简述2、创建 /proc/asound 目录树2.1 /proc/asound/version 文件2.2 /proc/asound/devices 文件2.3 /proc/asound/cards 文件2.4 /proc/asound/cardx 目录2.5 /proc/asound/pcm 文件一、概述 Linux系…

企业不可忽视的舆情监测管理办法,TOOM舆情监控工作总结?

企业做好舆情监控以及舆情管理是对企业负责&#xff0c;在企业发展过程中不可能是一帆风顺的&#xff0c;少不了各种各样的流言蜚语&#xff0c;像舆情监控管理监测早知早解决。接下来我们简单了解企业不可忽视的舆情监测管理办法&#xff0c;TOOM舆情监控工作总结? 一、企业…

【NI Multisim 14.0原理图设计基础——调整元器件位置】

目录 序言 一、调整元器件位置 &#x1f34a;1.元器件的移动 &#x1f34a;2.元器件的旋转 &#x1f34a;3.元器件的对齐 序言 NI Multisim最突出的特点之一就是用户界面友好。它可以使电路设计者方便、快捷地使用虚拟元器件和仪器、仪表进行电路设计和仿真。 首先启动NI…

【自学Python】Python print()函数

Python print()函数 Python print()函数教程 在 Python 中&#xff0c;print() 函数用于打印相应的信息到终端控制台&#xff0c;同时 print() 函数可以支持同时输出一个或多个 变量。 Python print()函数详解 语法 print(*objects, sep , end\n, filesys.stdout, flushFa…

线性代数 --- 投影Projection 六(向量在子空间上的投影)

向量b在多维子空间上的投影回顾&#xff1a;向量在向量上&#xff08;直线上&#xff09;的投影在研究向量在子空间上的投影前&#xff0c;先回顾一下前面学习的一个任意向量b在另一个向量a上的投影&#xff0c;共三个部分。1&#xff0c;求权重系数&#xff08;A constant&…

2022 general purpose in-context learning by meta-learning transformers

wps: option left 回到上一个视图 Kirsch L, Harrison J, Sohl-Dickstein J, et al. General-purpose in-context learning by meta-learning transformers[J]. arXiv preprint arXiv:2212.04458, 2022. 目录Kirsch L, Harrison J, Sohl-Dickstein J, et al. General-purpose…

【高校节能】高校电力能源智能管理系统设计目标与原则

摘 要&#xff1a;高校构建电力能源智能管理系统&#xff0c;可以实现对高校电力能源消耗的实时监测、分析预警和辅助决策。系统通过能效管理技术监测各个设备的用电情况&#xff0c;并通过数据的取得、整合、汇总来实现能源的绩效管理。系统从全局出发&#xff0c;整体调控电…

CCF BDCI | 算能赛题决赛选手说明论文-03

基于TPU平台实现人群密度估计∗ ChaMd5-AI 唐晶机械工程&博士二年级 华中科技大学 中国-武汉 j_tanghust.edu.cn 团队简介 唐晶&#xff0c;2001年生&#xff0c;本科毕业于华中科技大学机械卓越工程师班&#xff0c;现为华中科技大学机械科学与工程学院陶波教授课题组博…

视频实时自然美颜, 无惧素颜上镜

华为HMS Core 视频编辑服务依托自身AI技术的核心优势&#xff0c;在最新版本HMS Core 6.8.0中上线了全新的视频美颜功能&#xff0c;能对指定图片或视频中的人脸实现磨皮、美白、大眼、瘦脸的美颜效果&#xff0c;适用于直播、相机、视频剪辑、图片处理等场景中&#xff0c;打造…

cubeIDE开发, stm32的GPIO原理、cubeMX配置及底层源码实现分析

一、GPIO介绍 1.1 GPIO 简述 GPIO(General purpose input/output&#xff0c;通用型输入输出)&#xff0c;一个引脚可以用于输入、输出或其他特殊功能&#xff0c;PIN脚依现实需要可作为通用输入&#xff08;GPI&#xff09;或通用输出&#xff08;GPO&#xff09;或通用输入与…