码迷,mamicode.com
首页 > 其他好文 > 详细

[滑动窗口] leetcode 424 Longest Repeating Character Replacement

时间:2019-08-11 23:22:33      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:ring   ace   int   ems   cto   出现   for   滑动窗口   记录   

problem:https://leetcode.com/problems/longest-repeating-character-replacement/

        维护一个最多包含k个额外字符的滑动窗口。需要记录当前出现次数最多字符的出现次数来判断窗口是否合法,如果超过了,就把首指针向后挪一位,同时更新最多出现次数。对每个合法窗口,取其中的最大值。

class Solution {
public:
    int characterReplacement(string s, int k) {
        
        int begin = 0;
        int res = 0;
        int maxLen = 0;
        vector<int> count(26, 0);
        for(int i = 0;i < s.size();i++) // end
        {
            count[s[i] - A]++;
            maxLen = max(maxLen, count[s[i] - A]);
            int len = i - begin + 1;
            if(len > maxLen + k)
            {
                count[s[begin] - A]--;
                begin++;
                maxLen = *max_element(count.begin(), count.end());
            }
       //     cout << res << " ";
            res = max(res, i - begin + 1);
        }
        return res;
    }
};

 

[滑动窗口] leetcode 424 Longest Repeating Character Replacement

标签:ring   ace   int   ems   cto   出现   for   滑动窗口   记录   

原文地址:https://www.cnblogs.com/fish1996/p/11337010.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!