给你一个字符串 s 和一个整数 k 。你可以选择字符串中的任一字符,并将其更改为任何其他大写英文字符。该操作最多可执行 k 次。
在执行上述操作后,返回包含相同字母的最长子字符串的长度。
解题思路:
用左右指针框住范围,进来的算最多字符的数量,看最多字符和范围是否满足小于等于K个字符的容忍范围,容忍:右指针右移,不容忍:左指针右移
class Solution:
def characterReplacement(self, s: str, k: int) -> int:
token = [0] * 26
sLength = len(s)
maxLength = left = right = 0
while right < sLength:
token[ord(s[right]) - ord("A")] += 1
maxLength = max(maxLength, token[ord(s[right]) - ord("A")])
if right - left + 1 - maxLength > k:
token[ord(s[left]) - ord("A")] -= 1
left += 1
right += 1
return right - left