力扣(LeetCode)算法_C++——替换后的最长重复字符

给你一个字符串 s 和一个整数 k 。你可以选择字符串中的任一字符,并将其更改为任何其他大写英文字符。该操作最多可执行 k 次。

在执行上述操作后,返回包含相同字母的最长子字符串的长度。

示例 1:

输入:s = "ABAB", k = 2

输出:4

解释:用两个'A'替换为两个'B',反之亦然。

示例 2:

输入:s = "AABABBA", k = 1

输出:4

解释:

将中间的一个'A'替换为'B',字符串变为 "AABBBBA"。

子串 "BBBB" 有最长重复字母, 答案为 4。

可能存在其他的方法来得到同样的结果。

cpp 复制代码
    int characterReplacement(string s, int k) {
        //int ans = 0;
        int left = 0, right = 0, maxCnt = 0;
        int fre[26] = {0};
        while (right < s.size()) {
            fre[s[right] - 'A']++;
            maxCnt = max(maxCnt, fre[s[right] - 'A']);

            if (right - left + 1 - maxCnt > k) {
                //ans = ans < (right - left) ? (right - left) : ans;
                fre[s[left] - 'A']--;
                left++;
            }

            right++;
        }

        //ans = ans < (right - left) ? (right - left) : ans;
        //return ans;
        return right - left;
    }
相关推荐
TL滕12 分钟前
从0开始学算法——第十五天(滑动窗口练习)
笔记·学习·算法
DuHz13 分钟前
milliLoc 论文精读:把商用毫米波 FMCW 的绝对测距从“厘米栅格”推进到“毫米级连续值”,并顺带修正 AoA 的系统相位偏差
论文阅读·物联网·算法·信息与通信·毫米波雷达
肥大毛24 分钟前
C++入门学习---结构体
开发语言·c++·学习
qq_4017004129 分钟前
Linux文件锁解决多进程并发
linux·服务器·算法
长安er1 小时前
LeetCode 83/237/82 链表删除问题-盒子模型
数据结构·算法·leetcode·链表·力扣
小虎牙0071 小时前
RSA 的核心原理
算法
重生之后端学习1 小时前
56. 合并区间
java·数据结构·后端·算法·leetcode·职场和发展
小猪猪屁1 小时前
顺序表与链表:头插法与尾插法详解
c语言·数据结构·c++
历程里程碑1 小时前
C++ 5:模板初阶
c语言·开发语言·数据结构·c++·算法
leoufung2 小时前
LeetCode 74. Search a 2D Matrix
数据结构·算法·leetcode