题目:
给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次。在执行上述操作后,找到包含重复字母的最长子串的长度。
注意:字符串长度 和 k 不会超过 104。
思路:
滑动窗口
解答:
class Solution:
def characterReplacement(self, s: str, k: int) -> int:
if not s:
return 0
#cmax保存滑动窗口内相同字母出现次数的历史最大值
cmax=0
left=0
right=0
count=[0]*26
n=len(s)
while right<n:
count[ord(s[right])-ord("A")]+=1
cmax=max(cmax,count[ord(s[right])-ord("A")])
#滑动窗口
if right-left+1>cmax+k:
count[ord(s[left])-ord("A")]-=1
left+=1
#扩展窗口
right+=1
return right-left