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

    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;
        }
    }
    

    题目总结

    问题分割为两部分

    内容来自博客园,拒绝爬虫网站
  • 相关阅读:
    Java入门(6)方法
    重构改善已有代码
    .NET面试题系列(八)电商瞬时抢购的方案
    .NET面试题系列(七)IIS
    设计模式综述
    基于ELK5.1(ElasticSearch, Logstash, Kibana)的一次整合测试
    acl.go
    单机部署-consul
    baseFileWriter.go
    config.go
  • 原文地址:https://www.cnblogs.com/Heliner/p/10971880.html
Copyright © 2011-2022 走看看