【LeetCode】3. Longest Substring Without Repeating Characters
2017-01-14 16:55
447 查看
Difficulty: Medium
Given a string, find the length of the longest substring without repeating characters.
Examples:
Given
which the length is 3.
Given
with the length of 1.
Given
with the length of 3. Note that the answer must be a substring,
a subsequence and not a substring.
分析
假设子串里含有重复字符,则父串一定含有重复字符,单个子问题就可以解决父问题,因此可以使用贪心法。
跟动规不同,动规里,单个子问题只能影响父问题,不足以解决父问题。
从左往右扫描,当遇到重复字母时,以上一个重复字母的index+1,作为新的搜索起点位置,直到最后一个字母,
时间复杂度为O(n)
Given a string, find the length of the longest substring without repeating characters.
Examples:
Given
"abcabcbb", the answer is
"abc",
which the length is 3.
Given
"bbbbb", the answer is
"b",
with the length of 1.
Given
"pwwkew", the answer is
"wke",
with the length of 3. Note that the answer must be a substring,
"pwke"is
a subsequence and not a substring.
分析
假设子串里含有重复字符,则父串一定含有重复字符,单个子问题就可以解决父问题,因此可以使用贪心法。
跟动规不同,动规里,单个子问题只能影响父问题,不足以解决父问题。
从左往右扫描,当遇到重复字母时,以上一个重复字母的index+1,作为新的搜索起点位置,直到最后一个字母,
时间复杂度为O(n)
class Solution { public: int lengthOfLongestSubstring(string s) { const int ASCII_MAX = 255; int last[ASCII_MAX]; int start = 0; fill(last, last + ASCII_MAX, -1); int max_len = 0; for (int i = 0; i < s.size(); i++) { if (last[s[i]] >= start) { max_len = max(i - start, max_len); start = last[s[i]] + 1; } last[s[i]] = i; } return max((int)s.size() - start, max_len); } };
相关文章推荐
- 【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 The Solution of Python and Javascript
- 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