力扣(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;
    }
相关推荐
疯狂打码的少年27 分钟前
【数据结构】树的基本概念与二叉树定义
java·数据结构·笔记·算法
webmote3327 分钟前
用 NVIDIA Nemotron 3 Super + .NET 构建有记忆的多轮对话
后端·算法
Keven_1133 分钟前
算法札记:区分稀疏图与稠密图在经验上的数学计算差异
算法·稠密图·稀疏图
Sagittarius_A*1 小时前
后量子密码|前置基础 03|数字签名运行逻辑:签名签发、核验原理与实际业务应用
算法·信息安全·密码学·数字签名·后量子密码
DBA小马哥1 小时前
向量数据库入门到进阶:Embedding、ANN算法与RAG落地的关键术语
数据库·算法·embedding
Luhui Dev2 小时前
如何在 WorkBuddy 中使用大角几何:从 MCP 接入到 AI 几何作图
人工智能·数学·算法·agent·luhuidev
Smilecoc2 小时前
决策树(五):决策树回归
算法·决策树·回归
小龙报2 小时前
【优选算法】1.搜索插入位置 2.x的平方根
java·c语言·数据结构·c++·python·算法·蓝桥杯
A_humble_scholar2 小时前
Linux(二) C++ TCP/UDP网络编程
linux·网络·c++
Hi李耶3 小时前
【LeetCode】15.三数之和
java·算法·leetcode