当前位置: 首页 > 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.jsqmd.com/news/879712/

相关文章:

  • 2026超高压传感器品牌排名发布,广东犸力在深海探测领域展现极强长期稳定性 - 品牌速递
  • 2026抖音在线去水印怎么操作?6种方法实测对比,这4款微信小程序最靠谱 - 科技热点发布
  • 2026 海南封关红利全面释放!海南初创公司 靠谱财税代办四强推荐 - 资讯纵览
  • 安全漏洞防护完全指南
  • 3分钟掌握novel-downloader:打造你的永久小说图书馆终极指南
  • 2026年5月滁州地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • 2026年5月大兴安岭塔河地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • 初次使用Taotoken从注册到成功发起第一个API调用的全过程体验
  • ppt模板_0041_十一国庆主题3
  • 2026视频号视频怎么保存到相册?实测6种方法,这4款小程序几乎零失败 - 科技热点发布
  • 2026年最新测评:别人视频号里的视频怎么保存到相册?安卓/苹果手机保存方法横评 - 科技热点发布
  • 2026年5月滁州定远地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • 【审计专栏】【财务领域】【会计领域】第二十五篇 企业的收入来源和成本支出模型01 国有企业
  • 在Hermes Agent项目中集成Taotoken自定义模型提供方的步骤
  • 2026年5月沧州泊头地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • ppt模板_0042_十一国庆主题4
  • 深度测评!200元以内平价颈霜红黑榜:lefufu、凡士林与极博士该怎么选? - 资讯纵览
  • 【审计专栏】【财务领域】【会计领域】第二十五篇 企业的收入来源和成本支出模型01 国有企业(2)
  • 2026年实测:视频号视频怎么下载到手机相册?安卓苹果完整避坑指南 - 科技热点发布
  • 2026年5月成都武侯地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • 2026年5月成都新都地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • 一直怕大模型幻觉,发现针对性harness约束能大大消除
  • AliceSoft游戏文件逆向工程深度解析:从二进制格式到高级编辑的完整方案
  • 2026视频号视频保存终极指南:4款免费小程序实测对比 - 科技热点发布
  • 2026年5月江门新会地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 诚信金利回收
  • ppt模板_0043_新年主题1
  • 2026 微信去水印小程序横向测评:这 4 款免费工具谁最好用? - 科技热点发布
  • 基于 OAuth 设备码流滥用的 Kali365 钓鱼攻击机理与防御体系研究
  • ChatGPT移动端数据同步失效?抓包分析发现:微软Azure CDN缓存策略竟导致会话丢失——附绕过方案
  • QrazyBox终极指南:专业二维码修复工具拯救你的损坏二维码