一、思路
滑动窗口。固定左端,右端一直扩大,并计数。如果窗口内存在相同的元素,就将窗口左端向右滑动,直到不存在相同元素。
二、代码
1.python
代码如下:
class Solution:
def lengthOfLongestSubstring(self, s) :
l = 0
res = 0
now = 0
lookup = set()
for r in range(len(s)):
now += 1
while s[r] in lookup:
lookup.remove(s[l])
l += 1
now -= 1
if now > res:
res = now
lookup.add(s[r])
return res
2.C++
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int res = 0;
int now = 0;
int l = 0;
unordered_set<char> lookup;
for(int i=0;i<s.size();i++){
now++;
while(lookup.find(s[i]) != lookup.end()){
lookup.erase(s[l]);
l++;
now--;
}
if(now > res){
res = now;
}
lookup.insert(s[i]);
}
return res;
}
};