力扣(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;
    }
相关推荐
坚持就完事了4 分钟前
蓝桥杯中Python常用的库与模块
python·算法
立志成为大牛的小牛5 分钟前
数据结构——四十四、平衡二叉树的删除操作(王道408)
数据结构·学习·程序人生·考研·算法
C语言小火车5 分钟前
C/C++ 指针全面解析:从基础到进阶的终极指南
c语言·开发语言·c++·指针
Suckerbin17 分钟前
一次LeeCode刷题记录:接雨水
算法
Blossom.11841 分钟前
RLHF的“炼狱“突围:从PPO到DPO的工业级对齐实战
大数据·人工智能·分布式·python·算法·机器学习·边缘计算
wefg144 分钟前
【C++】特殊类设计
开发语言·c++
帅中的小灰灰1 小时前
C++编程原型设计模式
开发语言·c++
凌康ACG1 小时前
Sciter窗口间状态事件交互(四)
c++·sciter
“αβ”2 小时前
MySQL库的操作
linux·服务器·网络·数据库·c++·mysql·oracle
MobotStone2 小时前
从问答到决策:Agentic AI如何重新定义AI智能体的未来
人工智能·算法