1. 题目
2. 解法
思路:滑动窗口来遍历字符串
大致如下:
- 定义一个哈希集合和两个指针,分别表示窗口内的字符和窗口的左右边界。
- 定义一个变量,表示窗口的最大长度,也就是答案。
- 从左到右遍历字符串,每次移动右指针,把它指向的字符加入到哈希集合中。
- 如果哈希集合中已经存在这个字符,说明有重复,那么就移动左指针,把它指向的字符从哈希集合中删除,直到没有重复为止。
- 每次移动指针后,更新最大长度,取它和当前窗口长度的较大值。
- 当右指针到达字符串末尾时,返回最大长度。
具体实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | public static int lengthOfLongestSubstring(String s) { if (s == null || s.length() == 0 ) { return 0 ; } int max = Integer.MIN_VALUE; int size = s.length(); int start = 0 , end = 0 ; HashSet<Character> set = new HashSet<>(); for ( int i = 0 ; i < size; i++) { char c = s.charAt(i); while (set.contains(c)) { set.remove(s.charAt(start)); start++; } set.add(c); end++; max = Math.max(max, end - start); } return max; } |
3. 总结
分类:
算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2021-04-28 深入JVM关闭与关闭钩子
2021-04-28 ShutdownHook - Java 优雅停机解决方案
2021-04-28 RocketMQ性能优化
2021-04-28 RocketMQ调优心得总结
2021-04-28 RocketMQ性能优化【实战笔记】
2021-04-28 RocketMQ在面试中那些常见问题及答案+汇总
2019-04-28 24种设计模式的通俗理解