# 424. Longest Repeating Character Replacement

![](https://4272748102-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LekNH5IywF8mjBxFcnu%2F-MkzeYOBeS1B-mh4jGFr%2F-MkzemVUQn3F-hD-x-EH%2Fimage.png?alt=media\&token=f2a9bea2-ec5d-4139-b60b-3864d4eaa249)

![](https://4272748102-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LekNH5IywF8mjBxFcnu%2F-MkzeYOBeS1B-mh4jGFr%2F-Mkzep3BVWMglIjQXvsq%2Fimage.png?alt=media\&token=ae0d2d13-34dc-40d8-bb1a-0f884489d9f8)

time: O(n)

space: O(1)

```java
class Solution {
    public int characterReplacement(String s, int k) {
        int maxFreq = 0;
        int count[] = new int[26];
        int left = 0; 
        int result = 0;
        for (int right = 0; right < s.length(); right++) {
            count[s.charAt(right) - 'A']++;
            maxFreq = Math.max(maxFreq, count[s.charAt(right) - 'A']);
            
            while (right - left + 1 - maxFreq > k) {
                count[s.charAt(left) - 'A']--;
                left++;
            }
            result = Math.max(result, right - left + 1);
        }
        return result;
    }
}
/*
ABAB
i. j
j - i +1 - maxfrq <= k
*/
```
