Longest Repeating Character Replacement

给一个字符串, 可以替换k个字符, 求替换后最长的reapting character.

这题有点难度, 需要双指针滑窗, 当找到满足的后, start应该++.

class Solution {
    public int characterReplacement(String s, int k) {
        int start = 0;
        int end = 0;
        char max = s.charAt(0);
        int curMax = 0;
        int len = s.length();
        int res = 0;
        int flip = 0;
        int sameLetter = 0;
        Map<Character, Integer> map = new HashMap<>();
        while (start < len - k) {
            while (end < len && flip <= k) {
                char c = s.charAt(end);
                Integer value = map.get(c);
                if (value == null) {
                    map.put(c, 1);
                } else {
                    map.put(c, value + 1);
                }
                value = map.get(c);
                if (value > sameLetter) {
                    max = c;
                    sameLetter = value;
                }
                flip = end - start + 1 - sameLetter;
                if (flip <= k) {
                    curMax = Math.max(curMax, end - start + 1);
                }
                end++;
            }
            res = Math.max(res, curMax);
            char remove = s.charAt(start);
            Integer i = map.get(remove);
            map.put(remove, i - 1);
            start++; // aaabb
            flip=0;
        }
        return res;
    }
}