leetcode_longest_substring_without_repeating_characters

难度:Medium

每次维护以当前字符串结尾的不重复字符串的长度。一个hashset,存放之前的元素。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public:
int lengthOfLongestSubstring(string s) {
if(s.size()==0) return 0;
unordered_set<char> char_set;
int max_len = 1;
int start_index = 0;
char_set.insert(s[0]);
for(int i = 1; i < s.size(); i++)
{
while(char_set.count(s[i]) != 0 && !char_set.empty())
{
char_set.erase(s[start_index++]);
}
char_set.insert(s[i]);
max_len = max(max_len, i-start_index+1);
}
return max_len;
}
};