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

力扣之路03—无重复字符的最长子串 - NO

以为 a b c a b c b b 为例,

for 循环第一步,将a 放在 currentChar中, 然后 while 循环判断set里是否存在a, 由于是第一步,也就是不存在a,因此不进入while循环,直接被存入 set 里 按此步骤执行,

一直到 right 等于3的时候,也就是第二个a被放入了 currentChar 这时 while 判断出 currentChar中存在了a,

也就是发现了重复元素,因此进入while循环, 这时移除掉 lift 所指的元素,也就是a,然后left+1,lift向右移动了一个,在while完成去重后,把currentChar存入到set里,然后 maxLen 里计算两个right与lift之间相差多少再加上1,得出最长无重复子串的长度,因为right一直在向右移动,可以说right必然大于等于 lift 依此类推,一直执行完for循环

 1 class Solution {
 2     public int lengthOfLongestSubstring(String s) {
 3         // 定义 HashSet 存储当前窗口内出现的字符
 4         // 作用:快速判断某个字符是否已经在窗口内
 5         Set<Character> set = new HashSet<>();
 6         // 窗口的左边界,指向当前子串的起始位置,初始为0
 7         int left = 0;
 8         // 记录迄今为止找到的最长无重复子串的长度
 9         int maxLen = 0;
10         // for 循环中 right 从 0 到 s.length()-1
11         for(int right = 0; right < s.length(); right++){
12             // 取出当前 right 指向的字符
13             char currentChar = s.charAt(right);
14 
15             // 如果当前字符已经存在于 HashSet 中(说明窗口内有重复)
16             // 需要移动左指针,不断缩小窗口,直到移除那个重复字符
17             while(set.contains(currentChar)){
18                 // 移除左指针指向的字符,因为它已经不在新窗口内了
19                 set.remove(s.charAt(left));
20                 left++;
21             }
22             // 此时窗口内已经没有重复字符(因为上面 while 确保移除了重复项)
23             // 将当前字符加入到 HashSet 中,扩展窗口
24             set.add(currentChar);
25 
26             //  计算当前窗口的长度:right - left + 1
27             //  并更新 maxLen,保留较大的值
28             maxLen = Math.max(maxLen, right - left + 1);
29         }
30         // 遍历结束,返回最长无重复子串的长度
31         return maxLen;
32     }
33 }

 

http://www.rkmt.cn/news/1372093.html

相关文章:

  • 免费在线去水印软件推荐(2026保姆级教程):别让水印毁了你的好素材
  • 2026 海南封关红利全面释放!海南初创公司 靠谱财税代办四强推荐 - 资讯纵览
  • 明日方舟桌宠Ark-Pets显卡优化配置指南:3步实现流畅桌面动画
  • 深度测评!200元以内平价颈霜红黑榜:lefufu、凡士林与极博士该怎么选? - 资讯纵览
  • 2026年实测:视频号视频怎么下载到手机相册?安卓苹果完整避坑指南 - 科技热点发布
  • 2026年5月成都武侯地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • ppt模板_0043_新年主题1
  • 2026 微信去水印小程序横向测评:这 4 款免费工具谁最好用? - 科技热点发布
  • 【读书笔记】《更富有、更睿智、更快乐》
  • 【肾结石检测】基于matlab图像处理技术检测超声图像中的肾结石【含Matlab源码 15553期】含报告
  • 2026深圳劳动仲裁律师实测:服务效率与专业度排名 - 从来都是英雄出少年
  • 5分钟免费上手:AI换脸终极指南,用roop-unleashed创作专业级视频
  • 2026年5月吉安井冈山地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 诚信金利回收
  • 终极指南:5分钟掌握ViGEmBus虚拟游戏控制器驱动 [特殊字符]
  • 3步快速解锁百度网盘Mac版SVIP下载加速功能
  • GPT-SoVITS:5秒语音克隆革命,零基础打造个性化AI语音助手
  • 3步搞定图像矢量化:Vectorizer终极指南
  • 魔兽争霸3现代系统兼容性修复:告别闪退与卡顿的终极指南
  • 高校科研项目如何借助Taotoken管理多模型API调用
  • 量子机器学习实战:性能瓶颈与安全挑战深度剖析
  • 量子机器学习中的光锥特征选择:原理、实现与应用场景
  • 基于LIME可解释性AI的宇宙学模型分类:从fσ8数据到物理洞察
  • 教育科技公司构建 AI 助教系统时采用 Taotoken 实现模型调度与成本优化
  • M1/M2 Mac用户看过来:用Parallels Desktop 18虚拟机流畅运行Oracle P6 Professional 23.12的保姆级教程
  • 图数据库:Neo4j与知识图谱实战
  • 2026年5月呼和浩特玉泉地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 诚信金利回收
  • 2026年5月保定安国地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • QrazyBox终极指南:专业二维码修复工具拯救你的损坏二维码
  • 2026年4月河南口碑好的水处理供应厂家推荐,零排放水处理/地埋式污水处理/生活污水处理/污水处理,水处理公司口碑推荐 - 品牌推荐师
  • Props技术:基于隐私保护预言机的机器学习安全数据管道