class Solution {
public:
int lengthOfLongestSubstring(std::string s) {
int ml = 0;
int left = 0;
std::unordered_set<char> win; // 用于存储窗口内的字符
for (int right = 0; right < s.size(); ++right) {
char c = s[right];
while (win.find(c) != win.end()) { // 如果当前字符在窗口中,缩小窗口直到不含重复字符
win.erase(s[left]);
left++; // 更新左边界,缩小窗口
}
win.insert(c); // 将当前字符加入窗口
ml = std::max(ml, right - left + 1); // 更新最大长度
}
return ml;
}
};