zoukankan      html  css  js  c++  java
  • 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);
        }
    }
    
  • 相关阅读:
    Struts2框架
    读者写者问题
    哲学家就餐问题
    理解中断
    理解处理机调度
    理解死锁
    理解进程
    Linux CentOS 6.7 挂载U盘
    家庭-养老院模型理解IOC和DI
    Bash基础
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075699.html
Copyright © 2011-2022 走看看