力扣(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;
    }
相关推荐
碧海银沙音频科技研究院8 分钟前
基于炬芯平台ATS308X多模型兼容语音识别算法
人工智能·算法·语音识别
爱读书的小胖25 分钟前
LeetCode 274 H 指数 C 语言解题分析
c语言·算法·leetcode·1024程序员节
basketball6161 小时前
动态规划第一章:引论
算法·动态规划·1024程序员节
星夜离尘561 小时前
MATLAB 因果采样保持:用历史匹配和数据年龄防止未来信息泄漏
数据结构·算法·matlab
思麟呀2 小时前
BTree的原理与 C++ 完整实现
c语言·数据结构·c++·算法·1024程序员节
jimy12 小时前
C++ 中 xvalue 的 identity 存在哪里?和 lvalue 的 identity 有什么区别?
开发语言·c++·1024程序员节
xiaoye-duck2 小时前
《C++ 项目:手写大模型接入 SDK》Provider分析与实现
开发语言·c++·语言模型
Tsuki_tl2 小时前
【优选算法 — 双指针】经典例题题解+算法总结
算法·蓝桥杯·力扣·刷题·双指针·1024程序员节·优选算法
会编程的小孩3 小时前
qt_day1
c++
拓恒技术3 小时前
内河航道无人机智能巡检系统与算法应用
人工智能·深度学习·算法·无人机·智慧城市