首页 > 其他 > 详细

【leetcode 3. 无重复字符的最长子串】解题报告

时间:2019-05-03 12:40:08      阅读:106      评论:0      收藏:0      [点我收藏+]

技术分享图片

思路:滑动窗口的思想

方法一:滑动窗口

    int lengthOfLongestSubstring(string s) {
        /*
            控制一个滑动窗口,窗口内的字符都是不重复的,通过set可以做到判断字符是否重复
        */
        unordered_set<char> set;
        size_t maxL=0;
        for(int l=0,r=0;r<s.size();++r)
        {
            if (!set.count(s[r]))   // 当前判断的元素不存在于滑动窗口[l,r-1]中
                set.insert(s[r]);   // 将元素放入滑动窗口(即记录不重复字符)
            else    // 当前判断的元素已经存在于滑动窗口[l,r-1]中
            {
                while(set.count(s[r]))  // 从左缩短窗口,直到剔除当前判断的元素为止
                    set.erase(s[l++]);
                set.insert(s[r]);   // 将当前判断元素放入到滑动窗口中
            }
            maxL=max(maxL,set.size());  // 更新无重复字符的最长子串
        }
        return maxL;
    }

 

【leetcode 3. 无重复字符的最长子串】解题报告

原文:https://www.cnblogs.com/brianyi/p/10804645.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!