给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

思路:

采用滑动窗口的方式,[i, j] 表示当前索引值为i和j范围内的子串是不重复的 ,需要用一个set来记录非重复元素的字符

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int sz = s.size();
        if (sz == 0) {
            return 0;
        }
        unordered_set<char> st;
        int left = 0;
        int res = 0;
        for (int i = 0; i < sz; ++i) {
            while (st.find(s[i]) != st.end()) { //将s[i]和其左边的子串都给删除
                st.erase(s[left]);
                ++left;
            }
            st.insert(s[i]);
            int curSum = i - left + 1;
            res = max(res, curSum);
        }
        return res;
    }
};