leetcode3.无重复字符的最长字串C++滑动窗口-创新互联

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        unordered_setoccur;
        int len = s.size();
        int res = 0;
        int right = 0;
        int left = 0;
        for(; left< len; left++){
            if(left != 0){
                occur.erase(s[left-1]);
            }
            while(right< len && !occur.count(s[right])){
                occur.insert(s[right]);
                right++;
            }
            res = max(res, right - left);
        }
        return res;
    }
};

两重循环,left作为遍历字符串左边界时,right向右移动作为有边界,右移动的过程中使用无重复的occur哈希表存储right的访问字符。左边界移动时,移除上次左边界的元素。

成都创新互联专注于宽甸企业网站建设,自适应网站建设,购物商城网站建设。宽甸网站建设公司,为宽甸等地区提供建站服务。全流程按需求定制开发,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务

技巧:

unordered_set 的count方法,size方法 ,erase方法

更新res的max方法

改进:

hashset存储字符最后一次出现的位置,max的作用保证左边界的存在与窗口内不出现重复的字符.

力扣

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章题目:leetcode3.无重复字符的最长字串C++滑动窗口-创新互联
本文链接:http://ybzwz.com/article/jidch.html