Untitled

 avatar
unknown
plain_text
6 months ago
1.4 kB
1
Indexable
public class Solution {
    public int characterReplacement(String s, int k) {
        int n = s.length();
        int[] hash = new int[26]; // Frequency array for characters
        int maxFreq = 0; // Maximum frequency of any character in the window
        int maxLength = 0;

        for (int i = 0; i < n; i++) {
            // Reset the hash array and maxFreq for each new starting point
            for (int j = 0; j < 26; j++) {
                hash[j] = 0;
            }
            maxFreq = 0;

            for (int j = i; j < n; j++) {
                // Update the frequency of the current character
                hash[s.charAt(j) - 'A']++;
                // Update the maximum frequency of any character in the current substring
                maxFreq = Math.max(maxFreq, hash[s.charAt(j) - 'A']);

                // Calculate the number of changes needed
                int changes = (j - i + 1) - maxFreq;

                if (changes <= k) {
                    // Update the maximum length if the current substring is valid
                    maxLength = Math.max(maxLength, j - i + 1);
                } else {
                    // Break out of the loop if the substring is no longer valid
                    break;
                }
            }
        }

        return maxLength;
    }
}
Editor is loading...
Leave a Comment