3. 无重复字符的最长子串 - 力扣(LeetCode) (leetcode-cn.com)
这题有技术含量,用了滑动窗口,比如说
s = "abcabcbb",用unordered_set保存最长的字串,初始时保存一个字符a,从下一个位置开始扫描s,如果在set里找到相同的元素,去掉set开头的字符,继续在set里找与s在该位置相同的元素,如果没有找到,则将s对应位置的字符插入到set中。
class Solution {
public:
int lengthOfLongestSubstring(string s) {
if(s.length()==0){
return 0;
}
int res=0;
int left=0;
unordered_set<char>um;
um.insert(s[0]);
for(int i=1;i<s.size();i++){
while(um.find(s[i])!=um.end()){
um.erase(s[left]);
left++;
}
um.insert(s[i]);
if(res<um.size()) res=um.size();
}
return res<um.size()?um.size():res;
}
};