滑动窗口
用哈希表或者集合维护一个区间,保证区间内无重复元素
每当遇到重复元素时候 将left边界右移
class Solution {
public:
int lengthOfLongestSubstring(string s) {
set<char> q; //用于标记区间内元素的集合
int ans = 0; //记录答案
for(int i = 0, j = 0; j < s.length(); ) {
while(q.count(s[j])) { //如果新加入的元素存在就将left边界右移
q.erase(s[i++]); //left边界右移 并更新set,直至s[j]不存在与set中
}
q.insert(s[j++]); // 将新元素加入
ans = max(ans, j - i); //更新答案
}
return ans;
}
};