列表

详情


424. 替换后的最长重复字符

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

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

 

示例 1:

输入:s = "ABAB", k = 2
输出:4
解释:用两个'A'替换为两个'B',反之亦然。

示例 2:

输入:s = "AABABBA", k = 1
输出:4
解释:
将中间的一个'A'替换为'B',字符串变为 "AABBBBA"。
子串 "BBBB" 有最长重复字母, 答案为 4。

 

提示:

相似题目

至多包含 K 个不同字符的最长子串

最大连续1的个数 III

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int characterReplacement(string s, int k) { } };

python3 解法, 执行用时: 112 ms, 内存消耗: 15.1 MB, 提交时间: 2022-07-18 11:06:09

class Solution:
    def characterReplacement(self, s: str, k: int) -> int:
        num = [0] * 26
        n = len(s)
        maxn = left = right = 0
        # 指定右边界, 找出最远的左边界,满足区间不大于k个非边界字符
        while right < n:
            num[ord(s[right]) - ord('A')] += 1
            maxn = max(maxn, num[ord(s[right]) - ord('A')])
            if right - left + 1 - maxn > k:  # 左边界右移
                num[ord(s[left]) - ord('A')] -= 1
                left += 1
            right += 1
        return right - left

上一题