滑动窗口

  • leetcode一道题,无重复字符的最长子串
  • 滑动窗口原理好理解,脑子中要抽象出滑动窗口那个图才行
  • 同时还用了哈希表来帮助判断有无重复元素
class Solution {
public:
    //动态规划,从左往右遍历
    int lengthOfLongestSubstring(string s) {
        unordered_set<char> occ;
        int n = s.size();
        int rk=-1,ans=0;
        for(int i=0;i<n;i++){
            //左指针右移
            if(i!=0){
                occ.erase(s[i-1]);
            }
            //通过哈希集合occ.count来判断是否有重复字符
            while(rk+1<n && !occ.count(s[rk+1])){
                occ.insert(s[rk+1]);
                rk++;
            }
            ans=max(ans,rk-i+1);
        }
        return ans;
    }
};