LeetCode-Hot100-008无重复最长子串
思路
其实就是考虑每一个字母为右端点的时候的最长子串,只不过可以使用双指针或者说滑动窗口节省到 O ( n ) O(n) O(n)的复杂度。
不懂的可以在评论区问我
代码
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int ans = 0;
int left = 0; int right = 0;
int len_s = s.size();
unordered_set<char> vis;
for(; right<len_s; right++) //每次计算以right为右端点的最长子串
{
while(vis.count(s[right])==1)
{
vis.erase(s[left]); left++;
}
vis.insert(s[right]);
ans = max(right-left+1, ans);
}
return ans;
}
};