> For the complete documentation index, see [llms.txt](https://nataliekung.gitbook.io/ladder_code/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://nataliekung.gitbook.io/ladder_code/qiang-hua-4-shuang-zhi-zhen-ff09/longest-repeating-character-replacement.md).

# 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
```
