讨论/《哈希表》 - 替换后的最长重复字符/
《哈希表》 - 替换后的最长重复字符

Python3

class Solution:
    def characterReplacement(self, s: str, k: int) -> int:
        """
        思路:1. k=0可以理解为求最长重复子串问题
             2. maxn 记录下当前窗口里最大的字母个数
             3. 如果当前窗口值-窗口中最大字母个数 <= k: 则扩大窗口(right+1)
                如果当前窗口值-窗口中最大字母个数 > k: 则向右滑动窗口(left+1)
        方法:哈希表 + 滑动窗口
        """
        num = [0] * 26
        n = len(s)
        maxn = left = right = 0
        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