zoukankan      html  css  js  c++  java
  • 424. 替换后的最长重复字符

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

    题目描述

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

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

    题目解析

    最多替换k次,即替换k次,这些被替换的字符串也是逻辑连续的。即求窗口中的字符符合其中最大的字母的个数N和滑动窗口大小M,有M-N<=K,这就得出窗口收缩的条件M-N>K

    题目特征

    • 划分为两类事物,滑动窗口内个数最多的数字和其他
    • 需要求出滑动窗口的收缩条件
    • 保证滑动窗口里面东西是连续的

    题目解答

    class Solution {
        public int characterReplacement(String s, int k) {
            //
            char[] chs = s.toCharArray();
            int len = s.length();
            int[] dict = new int[26];
            int maxc = 0,l=0,res=0;
            for(int r =0 ; r < len ; r++){
               dict[chs[r]-'A']++;
                maxc = Math.max(maxc,dict[chs[r]-'A']);
                while(r-l+1-maxc >k){
                    dict[chs[l++]-'A']--;
                }
                    
                res = Math.max(r-l+1,res);
            }
            return res;
        }
    }
    

    题目总结

    问题分割为两部分

    内容来自博客园,拒绝爬虫网站
  • 相关阅读:
    php (一)
    php 运算符
    Python 元组
    Python 深拷贝和浅拷贝的区别
    Python 列表
    Python 字符串
    Python 循环控制
    Python 随机数,数学
    bzoj5018 [Snoi2017]英雄联盟
    bzoj5015 [Snoi2017]礼物
  • 原文地址:https://www.cnblogs.com/Heliner/p/10971858.html
Copyright © 2011-2022 走看看