class Solution {
public:
int lengthOfLongestSubstring(string s) {
//记录窗口中的数据
unordered_map<char, int> window;
//初始化窗口的左右指针
int left = 0, right = 0;
int lengthstr = 0;
while(right < s.size()){
char c = s[right];
right++;
//将元素加入窗口中
window[c]++;
//如果窗口该元素已经存在了,则一直缩小窗口至窗口中仅有一个元素
while(window[c] > 1){
int cc = s[left];
left++;
window[cc]--;
}
//记录此时的长度
if(right - left > lengthstr){
lengthstr = right - left; //易错,前面right多移动了一位
}
}
return lengthstr;
}
};
我把自己按照labuladong的思路写的C++代码分享出来,并给出了详细的代码注释,特别适合新手,尤其是对C++也不熟悉的人。欢迎阅读我在力扣上的账号:
leetcode-cn.com/u/mianhua1212/