给定一个字符串 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;
}
};