题目描述:
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
思路:
滑动窗口
C++
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int n = s.length();
if (n < 2)//长度为1,最长子串为自己
return n;
int maxlen = 0;
unordered_set<char> lookup;//lookup存储无重复子串
int left = 0;
int nt;//存储最长子串长度
for(int k = 0; k < n; ++k ){//从头开始遍历
while(lookup.find(s[k]) != lookup.end()){//查找s,若有重复则left右移一个单位
lookup.erase(s[left]);
++left;
}
lookup.insert(s[k]);
nt = lookup.size();
maxlen = max(maxlen, nt);
}
return maxlen;
}
};