424. 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 most k times. 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 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.
窗口指针状态的更新和题意的结合:
count = Math.max(count, ++sum[s.charAt(fast) - 'A']); while (fast - slow + 1 - count > k) { sum[s.charAt(slow) - 'A']--; slow++; }
public int characterReplacement(String s, int k) { if (s == null || s.length() == 0) { return 0; } int[] sum = new int[26]; int slow = 0, fast = 0, count = 1, ans = 1; while (fast < s.length()) { count = Math.max(count, ++sum[s.charAt(fast) - 'A']); while (fast - slow + 1 - count > k) { sum[s.charAt(slow) - 'A']--; slow++; } ans = Math.max(ans, fast - slow + 1); fast++; } return ans; }