C++ 版本的滑动窗口解决方案
class Solution {
public:
int lengthOfLongestSubstring(string s) {
if(s.empty()) return 0;
unordered_map<char,int> sub_map;
int left=0;
int right = 0;
int max_len = 1;
while(right < s.size()){
// 如果在已经存在的字符中找到该字符,更新该字符的新位置,并且计算在此之前的不重复子串的长度,进行取极大值。
if(sub_map.find(s[right])!=sub_map.end()) {
if(sub_map[s[right]]>= left){
max_len = max_len > (right - left) ? max_len : right - left;
left = sub_map.at(s[right])+1;
}else{
}
}
sub_map[s[right]] = right;
right++;
}
max_len = max_len > (right -left ) ? max_len:right-left;
return max_len;
}
};