// 为什么有畏惧感,因为 1. 思路不够清晰,那思路不清晰,就好好想啊,想的时候困难在哪里
// 2. 双指针的状态维护操作不熟悉 ,基础不牢固
//
// 总结: 错了一次,一开始以为类似单调队列,只需要判断一下左端点的是不是重复就行了。但实际上需要看右端点是不是重复,属于思路不够清晰。
// 双指针调试技巧:打印左右指针和想要的值
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int res = 0;
unordered_map<char, int> m1;
int n = s.length();
for (int j = 0, i = 0; j < n; j++) {
m1[s[j]]++;
while (m1[s[j]] > 1) {
m1[s[i++]]--;
}
res = max(j - i + 1, res);
}
return res;
}
};