[LeetCode] 3. Longest Substring Without Repeating Characters
2018-02-19 19:39
537 查看
3. Longest Substring Without Repeating Characters (最长无重复子序列)
Longest Substring Without Repeating Characters 最长无重复子序列题目翻译
解题方法
代码
1. 题目翻译
给定一个字符串,找出最长不重复子序列。例子:
输入: "abcabcbb" 输出: 3("abc") 输入: "bbbbb" 输出: 1("b") 输入: ""pwwkew"" 输出: 3("wke")
注意子序列必须是连续的。
2. 解题方法
使用hash保存出现过的字符和位置。使用一个cur变量记录当前子序列长度,start变量记录当前子序列起始位置。遍历字符串,有三种可能:如果当前字符没出现过,就将该字符与下标存到hash中,当前子序列长度cur加1。
如果当前字符出现过,但是上一次出现的位置不在当前记录的子序列中,就把当前长度cur加1,并把该字符在hash中的位置更新。
如果当前字符出现过,并且上一次出现的位置在当前子序列中,说明该子序列含有重复字符了,就把start变为上一次出现位置的后一个(这样可以保证子序列中没有重复字符)。然后将当前子序列长度更新,并把当前字符的位置更新。
3. 代码
//Runtime: 35ms class Solution { public: int lengthOfLongestSubstring(string s) { map<char,int> H; map<char,int>::iterator it; int max = 0; int start = 0; int cur = 0; for(int i = 0;i<s.size();i++){ it = H.find(s[i]); if(it==H.end()){ H.insert(pair<char,int>(s[i],i)); cur++; } 94dd else{ if(it->second<start){ cur++; }else{ start = it->second + 1; cur = i - start + 1; } it->second = i; } max = max>cur?max:cur; } max = max>cur?max:cur; return max; } };
相关文章推荐
- [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
- 【C++】【LeetCode】3. Longest Substring Without Repeating Characters
- LeetCode - 3. Longest Substring Without Repeating Characters
- leetcode 3. Longest Substring Without Repeating Characters
- LeetCode3. 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
- LCP003 LeetCode 3. Longest Substring Without Repeating Characters
- LeetCode-3. Longest Substring Without Repeating Characters