zoukankan      html  css  js  c++  java
  • [424. 替换后的最长重复字符](https://leetcode-cn.com/problems/longest-repeating-character-replacement/)

    题目描述

    给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 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;
        }
    }
    

    题目总结

    问题分割为两部分

    内容来自博客园,拒绝爬虫网站
  • 相关阅读:
    JVM类加载(3)—初始化
    JVM类加载(1)—加载
    SQL笔记
    html5离线Web应用
    推荐3个很好的html5 网址
    HTML 5 File API应用实例
    异常与错误的区别
    html5Local Storage(本地存储)
    HTML5 js api 新的选择器
    5个HTML5 API
  • 原文地址:https://www.cnblogs.com/Heliner/p/10971860.html
Copyright © 2011-2022 走看看