LeetCode - 3. Longest Substring Without Repeating Characters
来源:互联网 发布:什么是淘宝登录密码 编辑:程序博客网 时间:2024/06/06 13:56
这道题目的思想是使用一个HashSet来存储Longest Substring Without Repeating Characters,同时使用两个指针i,j分别指向HashSet的第一个元素将要添加的元素,如果j指向的当前将要添加的元素不存在于HashSet中,那么我们就将这个元素加入HashSet,同时更新max的值;如果j指向的当前元素已经在HashSet中,那么我们就删除i所指向的元素并且i++,直到可以将当前的元素添加到HashSet中,注意这里不是只删除重复的元素,而是从最先加入HashSet的元素开始删除知道把重复的元素删除,考虑下面的例子:
a b c b d e e
当j指向第二个b的时候,此时Set: a b c,应该删除a,b之后再将b加入进来,而不是只删除b之后再把b加入进来,否则就会造成HashSet中存储的元素不连续。时间复杂度为O(n),空间复杂度为O(k),其中k是longest substring without repeating characters的长度,代码如下:
public class Solution { public int lengthOfLongestSubstring(String s) { if(s == null || s.length() == 0) return 0; int i = 0, j = 0, max = 0; Set<Character> set = new HashSet<>(); while(j < s.length()){ if(!set.contains(s.charAt(j))){ set.add(s.charAt(j++)); max = Math.max(max, set.size()); }else{ set.remove(s.charAt(i++)); } } return max; }}
知识点:
1. 这道题也可以看做是一道sliding windows类型的题目,遇到这样的题目,首先想到的是要使用Set这个集合,并且维持两个指针分别指向Set集合在数组中对应的两侧,根据题目的需求添加或者删除元素
0 0
- [LeetCode]3.Longest Substring Without Repeating Characters
- LeetCode 3.Longest Substring Without Repeating Characters
- LeetCode --- 3. Longest Substring Without Repeating Characters
- [Leetcode] 3. Longest Substring Without Repeating Characters
- [leetcode] 3.Longest Substring Without Repeating Characters
- [leetcode] 3. Longest Substring Without Repeating Characters
- [Leetcode]3. Longest Substring Without Repeating Characters
- leetcode 3. Longest Substring Without Repeating Characters
- 【Leetcode】3. Longest Substring Without Repeating Characters
- leetcode 3. Longest Substring Without Repeating Characters
- LeetCode-3.Longest Substring Without Repeating Characters
- LeetCode 3.Longest Substring Without Repeating Characters
- LeetCode - 3.Longest Substring Without Repeating Characters
- Leetcode 3. Longest Substring Without Repeating Characters
- 3. Longest Substring Without Repeating Characters LeetCode
- (Leetcode)3. Longest Substring Without Repeating Characters
- leetcode 3. Longest Substring Without Repeating Characters
- LeetCode-3. Longest Substring Without Repeating Characters
- 前景检测算法(十四)--SuBSENSE算法
- 1040. Longest Symmetric String (25)
- 可重录入与不可重录入和ELF文件的相关问题
- 在LinearLayout里面动态添加ImageView
- Mongoose3.3嵌入式web服务器源码剖析
- LeetCode - 3. Longest Substring Without Repeating Characters
- 第二天
- POJ2378->树形DP
- 更新Ubuntu Kylin源遇到问题
- 消息队列设计精要
- 0710学习记录
- yii2.0数据库交互ORM
- 客户端C和服务器S之间建立一个TCP连接,该连接总是以1KB的最大段长发送TCP段,客户端C有足够的数据要发送。当拥塞窗口为16KB的时候发生超时,如果接下来的4个RTT往返时间内的TCP段的传输是成
- 第一篇博客