Longest Substring Without Repeating Characters
来源:互联网 发布:淘宝买家诈骗怎么办 编辑:程序博客网 时间:2024/06/11 11:42
1.题目
给定一个字符串,请找出其中无重复字符的最长子字符串
例如,在"abcabcbb"
中,其无重复字符的最长子字符串是"abc"
,其长度为 3
。
对于,"bbbbb"
,其无重复字符的最长子字符串为"b"
,长度为1
2.算法
基本思路是维护一个窗口,窗口左侧和右侧边界都向右侧走,当扫描右边界下个元素时,如果窗口中没有正在扫描的元素,则把正在扫描的元素放在窗口中,如果有则记录当前子串长度和最优解的比较结果,左边界不断向后扫描,直到扫描到一个字符和右相同,右边继续扫描,知道到字符串尾
public int lengthOfLongestSubstring(String s) { // write your code here if (s == null || s.length() == 0) { return 0; } HashSet<Character> hs = new HashSet<Character>(); int l = 0; //窗口左 int r = 0; //窗口右 int max = 0; //最大窗口 while (r < s.length()) { if (hs.contains(s.charAt(r))) //如元素重复 { if (max < r - l) //保留最大 { max = r - l; } while (s.charAt(l) != s.charAt(r)) //移动左边界,直到没有重复 { hs.remove(s.charAt(l)); l++; } l++; } else //没有重复 { hs.add(s.charAt(r)); } r++; } max = Math.max(max, r - l); return max; }
python
def lengthOfLongestSubstring(self, s): # write your code here ans = 0 left = 0 last = {} for i in range(len(s)): if s[i] in last and last[s[i]] >= left: left = last[s[i]] + 1 last[s[i]] = i ans = max(ans, i - left + 1) return ans
0 0
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Future和FutureTask
- caffe源码阅读——Blob类
- java 多线程学习笔记2-同步代码块,死锁
- SVM总结
- 互联网数据库架构设计思路数据库
- Longest Substring Without Repeating Characters
- angularJS1自定义directive指令的创建方式
- 【微信小程序】注册一个微信小程序
- java类加载
- [回归分析][13]--岭回归
- 菜鸟C#学习记录:简单使用一个ListView控件
- hdu 4315 Climbing the Hill (阶梯博弈)
- okhttp的简单使用(一)
- Python学习笔记