Longest Repeating Character Replacement

Given a string that consists of only uppercase English letters, you can replace any letter in the string with another letter at mostktimes. Find the length of a longest substring containing all repeating letters you can get after performing the above operations.

Note: Both the string's length andkwill not exceed 104.

Example 1:

Input:

s = "ABAB", k = 2


Output:

4


Explanation:

Replace the two 'A's with two 'B's or vice versa.

Example 2:

Input:

s = "AABABBA", k = 1


Output:

4


Explanation:

Replace the one 'A' in the middle with 'B' and form "AABBBBA".
The substring "BBBB" has the longest repeating letters, which is 4.

分析

每次end的count和最大maxcount比较,取更大maxcount。然后while 首尾总长 - maxcount > k,一直缩头。

不知道为什么while不行 for可以

class Solution:
    def characterReplacement(self, s: str, k: int) -> int:
        res,ss,e,count,l,mm = 0,0,0,0,len(s),collections.Counter()
        for e in range(len(s)):            
            mm[s[e]] += 1
            count = max(count, mm[s[e]])   
            #e+=1
            while e - ss - count + 1 > k:
                mm[s[ss]] -= 1
                ss += 1
            res = max(res, e - ss + 1)
        return res

Last updated