• Java实现 LeetCode 424 替换后的最长重复字符


    424. 替换后的最长重复字符

    给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次。在执行上述操作后,找到包含重复字母的最长子串的长度。

    注意:
    字符串长度 和 k 不会超过 104。

    示例 1:

    输入:
    s = “ABAB”, k = 2

    输出:
    4

    解释:
    用两个’A’替换为两个’B’,反之亦然。
    示例 2:

    输入:
    s = “AABABBA”, k = 1

    输出:
    4

    解释:
    将中间的一个’A’替换为’B’,字符串变为 “AABBBBA”。
    子串 “BBBB” 有最长重复字母, 答案为 4。

    class Solution {
         public int characterReplacement(String s, int k) {
            char[] chars = s.toCharArray();
            int width = 0;
            for (int left = 0, right = 0, counts[] = new int[26]; right < chars.length; right++) {
                width = Math.max(width, ++counts[chars[right] - 'A'] + k);
                while (right - left + 1 > width)
                    counts[chars[left++] - 'A']--;
            }
            return Math.min(chars.length, width);
        }
    }
    
  • 相关阅读:
    二叉搜索树
    splay模板
    树状数组模板
    K尾相等数
    寻找最大数
    布线问题(最小生成树)
    开心的小明
    独木舟上的旅行(二)
    The Triangle(记忆化搜索)
    喷水装置(二)
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075088.html
Copyright © 2020-2023  润新知