LeetCode 第3题 无重复字符的最长子串(滑动窗口(双指针)+ HashSet)
📅 2026/7/31 11:50:26
👁️ 次浏览
一、核心算法思想采用滑动窗口双指针 HashSet时间复杂度 \(O(n)\)。定义窗口区间 \([i,rk]\)代表当前正在考察、无重复字符的连续子串i窗口左边界外层循环遍历rk窗口右边界只会向右移动不回退HashSet 集合occ实时保存当前窗口内部所有字符快速判断字符是否重复流程左边界i右移时将移出窗口的字符从集合删除在不重复前提下尽可能向右扩张右边界 rk每次扩张停止后计算窗口长度更新全局最长长度答案ans。区分概念子串必须连续子序列可以不连续。二、完整带注释代码class Solution { public int lengthOfLongestSubstring(String s) { // occ occurrence存储当前滑动窗口内的字符 SetCharacter occ new HashSet(); int n s.length(); int rk -1, ans 0; // rk右指针初始-1ansanswer保存最终结果 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; } // 更新最长子串长度 ans Math.max(ans, rk - i 1); } return ans; } }三、实例运行推演输入s abcabcbbi (左边界)操作rk窗口\([i,rk]\)occ 集合当前窗口长度ans 最大值i0i0 无需 remove持续右扩 rk2[0,2]{a,b,c}3ans3i1删除 s [0] 字符 a右扩 rk3[1,3]{b,c,a}3ans3i2删除 s [1] 字符 b右扩 rk4[2,4]{c,a,b}3ans3i3删除 s [2] 字符 c右扩 rk5[3,5]{a,b,c}3ans3i4删除 s [3] 字符 a无法继续右扩5[4,5]{b,c}2ans3i5删除 s [4] 字符 b右扩 rk6[5,6]{c,b}2ans3i6删除 s [5] 字符 c无法继续右扩6[6,6]{b}1ans3最终返回 ans 3四、关键语法与内置方法、基础类型 包装类积累1. String 内置方法s.length()获取字符串长度必须带括号数组长度写法arr.length无括号s.charAt(index)String 内置方法根据下标获取对应字符⚠️方法名全小写charAt禁止写成CharAt2. Java 基础类型与对应包装类核心规则Java 中Set、List、Map等集合泛型不支持基础数据类型必须使用包装类。支持自动装箱、自动拆箱无需手动转换。基础类型基本类型对应包装类刷题场景示例byteByteSetByteshortShortMapShort,StringintIntegerSetInteger两数之和、最长连续序列高频longLongMapLong,IntegerfloatFloat极少用到doubleDouble极少用到booleanBooleanSetBooleancharCharacter本题SetCharacter3. HashSet 常用方法occ.add()字符加入集合occ.remove()删除指定字符occ.contains()判断字符是否存在集合内4. 通用工具方法Math.max(a,b)返回两个数字中较大的值用于更新最长长度五、高频易错点汇总大小写错误s.CharAt()❌ 正确s.charAt()缺少调用对象不能单独写charAt()必须写成s.charAt(下标)混淆length与length()字符串不要漏写括号逻辑误区不要一次性把全部字符放入集合集合occ只保存当前窗口内字符窗口扩张 → add窗口左移收缩 → remove保持集合与窗口内容同步rk 初始值设为-1窗口初始为空保证第一轮循环可以访问下标 0 的字符if(i ! 0)判断i0 是第一轮窗口左侧没有移出元素无需执行 remove六、变量名称释义刷题通用简写occoccurrence窗口内已经出现的字符集合rkright index滑动窗口右指针i滑动窗口左指针ansanswer保存最终答案最长无重复子串长度
如何通过LCU API构建英雄联盟自动化工具:League Akari的完整实战指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit
还在为英雄联…
📅 2026/7/31 11:50:26
博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…
📅 2026/7/31 11:50:26
博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…
📅 2026/7/31 11:50:26
1. 项目概述:论文PPT自动化的痛点突破读研期间最深刻的记忆莫过于答辩前夜对着电脑屏幕改PPT到凌晨三点,眼睛干涩得像是被砂纸摩擦过。这种经历几乎成为学术圈的集体创伤——根据Nature最新调研,87%的研究生将"制作答辩PPT"列为读研…
📅 2026/7/31 12:42:56
摘要:该数据集专为智能舞蹈编排分析、动作评估、姿态评价以及 AI 辅助表演反馈等应用而设计。数据压缩包共包含 224 个文件,其中包括 223 个 .mp4 格式的舞蹈样例视频文件,以及一个名为 dance_choreography_multimodal_motion_dataset.csv 的…
📅 2026/7/31 12:42:56
摘要:本数据集选用 CREMA-D 和 RAVDESS 两个公开多模态情感识别数据集作为实验数据来源。两个数据集均包含语音和视频信息,能够同时提供语音声学特征与面部视觉特征,适合用于多模态情感识别模型的训练、验证和性能评估。数据集简介数据集概述…
📅 2026/7/31 12:42:56
更多请点击:
https://intelliparadigm.com
第一章:AI生成招聘视频合规风险预警(GDPR《生成式AI服务管理暂行办法》双合规 checklist) AI驱动的招聘视频生成正快速普及,但其背后潜藏的数据采集、人格权侵害与算法透明度…
📅 2026/7/31 12:42:56
APK Installer终极指南:5分钟在Windows上安装Android应用的完整教程 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer
你是否想在Windows电脑上直接运行Andro…
📅 2026/7/31 12:42:56
刚改完第三版模型,咖啡都凉透了。看着屏幕上那根红色的安全系数线,心里还是没底。做岩土工程这行,最怕的不是算不出,而是算出来的东西没人信。尤其是那份GEO5计算书,它不仅是数据的堆砌,更是你专业态度的名片。很多新手朋友,拿到软件就闷头点鼠标。输入参数,点击计算,…
📅 2026/7/31 12:41:58
数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…
📅 2026/7/31 0:00:23
BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…
📅 2026/7/31 0:00:23
当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…
📅 2026/7/31 0:00:23
更多请点击:
https://codechina.net
第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
📅 2026/7/31 1:18:08
1. 项目背景与核心价值去年参与的一个短剧项目让我深刻体会到传统创作流程的痛点:编剧团队花了三周打磨剧本,角色设计反复修改了七版,最后成片时又因为演员档期问题不得不临时调整分镜。这种低效的创作模式在快节奏的内容行业越来越难以为继。…
📅 2026/7/31 1:18:08
remix-i18next TypeScript类型安全实践:确保翻译键与类型定义同步 【免费下载链接】remix-i18next The easiest way to translate your React Router framework mode apps 项目地址: https://gitcode.com/gh_mirrors/re/remix-i18next
在开发多语言应用时&am…
📅 2026/7/31 1:18:08
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/31 7:18:38
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/30 17:17:14
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/31 5:18:28