424. Longest Repeating Character Replacement - Medium

Posted fatttcat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了424. Longest Repeating Character Replacement - Medium相关的知识,希望对你有一定的参考价值。

Given a string s that consists of only uppercase English letters, you can perform at most k operations on that string.

In one operation, you can choose any character of the string and change it to any other uppercase English character.

Find the length of the longest sub-string containing all repeating letters you can get after performing the above operations.

Note:
Both the string‘s length and k will 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.

 

sliding window

time = O(n), space = O(1)

class Solution 
    public int characterReplacement(String s, int k) 
        int[] count = new int[26];
        // maxCount: max # of unique characters in the current window
        int slow = 0, fast = 0, counter = 0, maxCount = 0, maxLen = 0;
        while(fast < s.length()) 
            count[s.charAt(fast) - ‘A‘]++;
            maxCount = Math.max(maxCount, count[s.charAt(fast) - ‘A‘]);
            fast++;
            
            // end - start - maxCount: # of characters that are NOT the character that occurs the most in the window
            while(fast - slow - maxCount > k) 
                count[s.charAt(slow) - ‘A‘]--;
                slow++;
            
            maxLen = Math.max(maxLen, fast - slow);
        
        return maxLen;
    

 

以上是关于424. Longest Repeating Character Replacement - Medium的主要内容,如果未能解决你的问题,请参考以下文章

424. Longest Repeating Character Replacement

424. Longest Repeating Character Replacement - Medium

[滑动窗口] leetcode 424 Longest Repeating Character Replacement

[LeetCode] 424. Longest Repeating Character Replacement

leetcode 3. Longest Substring Without Repeating Characters (Python版)

[LeetCode] Longest Substring Without Repeating Characters