Skip to main content

Command Palette

Search for a command to run...

replacment java

Published
1 min readView as Markdown
import java.util.HashMap;

class Solution {
    public int characterReplacement(String str, int maxChanges) {
        HashMap<Character, Integer> charFrequency = new HashMap<>();
        int maxFreqInWindow = 0;
        int longestSubstringLength = 0;
        int windowStart = 0;

        for (int windowEnd = 0; windowEnd < str.length(); windowEnd++) {
            char endChar = str.charAt(windowEnd);
            charFrequency.put(endChar, charFrequency.getOrDefault(endChar, 0) + 1);
            maxFreqInWindow = Math.max(maxFreqInWindow, charFrequency.get(endChar));

            int currentWindowSize = windowEnd - windowStart + 1;
            int replacementsNeeded = currentWindowSize - maxFreqInWindow;

            if (replacementsNeeded > maxChanges) {
                char startChar = str.charAt(windowStart);
                charFrequency.put(startChar, charFrequency.get(startChar) - 1);
                windowStart++;
            }

            longestSubstringLength = Math.max(longestSubstringLength, windowEnd - windowStart + 1);
        }

        return longestSubstringLength;
    }
}

More from this blog

Amit singh's blog

235 posts