【LeetCode刷题-滑动窗口】--424.替换后的最长重复字符

news2024/11/27 16:51:38

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

image-20231116172208402

方法:滑动窗口

  • 右边界先移动找到一个满足题意的可以替换k个字符以后,所有字符都变成一样的当前看来最小的子串,直到右边界纳入一个字符以后,不能满足的时候停下
  • 然后考虑左边界右移,左边界只须向右移动一格以后,右边界就又可以开始向右移动了,继续尝试找到更长的目标子串
  • 替换后的最长重复子串就产生在右边界、左边界交替向右移动的过程种
class Solution {
    public int characterReplacement(String s, int k) {
        int len = s.length();
        if(len < 2){
            return len;
        }
        char[] charArray = s.toCharArray(); //将字符串转换为字符数组
        int left = 0;  //定义滑动窗口的左右边界
        int right = 0;

        int res = 0;
        int maxCount = 0;
        int[] freq = new int[26];
        //[left,right)内最多替换k个字符可以得到只有一种字符的子串
        while(right < len){
            freq[charArray[right] - 'A']++;
            //在这里维护maxCount,因为每一次右边界读入一个字符,字符频数增加,才会使得maxCount增加
            maxCount = Math.max(maxCount,freq[charArray[right] - 'A']);
            right++;

            if(right - left >  maxCount + k){ //此时左边界为left,而右边界继续向右移动,使得长度更长,这个子串一定不是最长子串,需要将左边界右移
                //说明此时k不够用
                //把其他不是最多出现的字符替换以后,都不能填满这个滑动的窗口,这个时候必须要考虑左边界向右移动
                //移出滑动窗口的时候,频数数组必须要相应地做减法
                freq[charArray[left] - 'A']--;
                left++;
            }
            res = Math.max(res,right-left);
        }
        return res;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1216517.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用git上传代码至gitee入门(1)

文章目录 一、gitee注册新建仓库 二、git的下载三、git的简单使用&#xff08;push、pull&#xff09;1、将本地文件推送至gitee初始化配置用户名及邮箱将本地文件提交至gitee补充 2、将远程仓库文件拉取至本地直接拉拉至其他本地文件夹 一、gitee 注册 官网&#xff1a;http…

K8S篇之实现利用Prometheus监控pod的实时数据指标

一、监控部署 1、将k8s集群中kube-state-metrics指标进行收集&#xff0c;服务进行部署 1.1 pod性能指标&#xff08;k8s集群组件自动集成&#xff09; k8s组件本身提供组件自身运行的监控指标以及容器相关的监控指标。通过cAdvisor 是一个开源的分析容器资源使用率和性能特性的…

win11无法打开文件资源管理器

不知道为啥&#xff0c;升级之后文件夹就打不开了&#xff0c;研究了n个方案 注意&#xff1a;先备份一下注册表&#xff0c;祸祸完失败之后恢复回去 最终方案 很悲剧&#xff0c;下面的我都失败了&#xff0c;不过其他人有成功的&#xff0c;所以&#xff0c;我放弃官方的文件…

matlab如何实现任意长序列所有排列方式

最近被问到一个问题&#xff0c;如何计算一个由3个0和3个1组成的序列的所有组合情况&#xff0c;处理这个问题我没有找到特别恰当的函数&#xff08;如果有能直接做的函数欢迎评论告知&#xff09;&#xff0c;所以采用比较接近需求的perms函数来解决这个问题 首先看perms函数…

【人工智能】本地运行开源项目MMSegmentation引发的问题

文章目录 ❌AssertionError: Torch not compiled with CUDA enabled问题描述问题分析解决方案总结参考文献 ❌AssertionError: Torch not compiled with CUDA enabled 问题描述 python demo/image_demo.py demo/demo.png configs/pspnet/pspnet_r50-d8_4xb2-40k_cityscapes-5…

Sonar生成PDF错误Can‘t get Compute Engine task status.Retry..... HTTP error: 401

报错及修改&#xff1a; 报错&#xff1a;INFO: Can’t get Compute Engine task status.Retry… org.sonarqube.ws.connectors.ConnectionException: HTTP error: 401, msg: , query: org.apache.commons.httpclient.methods.GetMethod7a021f49 ERROR: Problem generating PD…

车联网解决方案(车联网设备安装部署案例)

车联网&#xff08;Connected Car&#xff09;是指通过无线通信技术将汽车与互联网连接起来&#xff0c;实现车辆与车辆之间、车辆与道路基础设施之间以及车辆与互联网之间的信息交流和实时控制。车载网关是车联网系统中的核心设备之一&#xff0c;负责将车辆内部的数据传输到云…

java实现钉钉机器人消息推送

项目开发中需要用到钉钉机器人发送任务状态&#xff0c;本来想单独做一个功能就好&#xff0c;但是想着公司用到钉钉机器人发送项目挺多的。所以把这个钉钉机器人抽离成一个组件发布到企业maven仓库&#xff0c;这样可以给其他同事用提高工作效率。 1.目录结构 2.用抽象类&…

分享6个超绝的设计素材网站,绝对好用!

设计师平时都去哪里找素材呢&#xff1f;收藏好这6个网站&#xff0c;绝对能解决你80%的素材需求&#xff0c;话不多说&#xff0c;直接上干货。 设计素材 1、菜鸟图库 https://www.sucai999.com/?vNTYxMjky 菜鸟图库是一个非常大的素材库&#xff0c;站内包含设计、办公、自…

前端常用的几种加密方法

文章目录 前端常用的几种加密方法md5 加密(不可逆)base64 位加密(可加密可解密)RSA 加密(公钥加密&#xff0c;私钥解密)AES 加密(需要密钥才能解密)CryptoJS 常用的加密方式--demo ✒️总结 前端常用的几种加密方法 在信息安全越来越受重视的今天&#xff0c;JS 安全一直是前端…

【文件上传】upload-labs 通关

环境准备 靶场upload-labs-env-win-0.1环境windows 靶场描述 靶场攻略 Pass-01 1.上传一句话木马 发现有类型限制 2.上传图片木马 抓包 3.修改后缀 将png修改为php. 成功上传&#xff0c; 4.查找文件地址 5.中国蚁剑连接 6.成功 7.源码分析 function checkFile() {var fi…

计算机组成原理——第一章

早期冯诺依曼机&#xff1a; 现代计算机&#xff1a; 五大部分&#xff1a; 1. 输入设备&#xff0c;是指将外部信息以计算机能读懂的方式输入进来&#xff0c;如键盘&#xff0c;鼠标等 2.输出设备&#xff0c;就是将计算机处理的信息以人所能接受的方式输出出来&#xff0c;比…

【问题解决】蓝牙显示已配对,无法连接,蓝牙设备显示在其他设备中。

最开始&#xff0c;我发现逻辑鼠标无法连接蓝牙了&#xff0c;怎么都不行&#xff0c;重连&#xff0c;重新配对&#xff0c;全不行。于是尝试用逻辑鼠标内的usb接口进行解决&#xff0c;重连成功。 然而&#xff0c;在连接耳机的时候&#xff0c;发现耳机音频同样无法连接&am…

2023数维杯国际赛数学建模竞赛选题建议及D题思路讲解

大家好呀&#xff0c;2023年第九届数维杯国际大学生数学建模挑战赛今天早上开赛啦&#xff0c;在这里先带来初步的选题建议及思路。 目前团队正在写B题和D题完整论文&#xff0c;后续还会持续更新哈&#xff0c;大家三连关注一下防止迷路。 注意&#xff0c;本文只是比较简略…

golang 解析oracle 数据文件头

package mainimport ("encoding/binary""fmt""io""os" ) // Powered by 黄林杰 15658655447 // Usered for parser oracle datafile header block 1 .... // oracle 数据文件头块解析 // KCBlockStruct represents the structure of t…

全链路压测:确保系统稳定性的关键一环

在当今高度数字化的业务环境中&#xff0c;系统的稳定性和性能至关重要。全链路压测作为确保系统在各种负载下依然可靠运行的关键工具&#xff0c;越来越受到企业的关注。本文将深入探讨全链路压测的概念及目的。 一、全链路压测概念 全链路压测是一种模拟真实用户行为、模拟全…

人人商城app禁用

api.map.baidu.com 换成 lbs.map.baidu.com

计算机网络:网络层ARP协议

在实现IP通信时使用了两个地址&#xff1a;IP地址&#xff08;网络层地址&#xff09;和MAC地址&#xff08;数据链路层地址&#xff09; 问题&#xff1a;已知一个机器&#xff08;主机或路由器&#xff09;的IP地址&#xff0c;如何找到相应的MAC地址&#xff1f; 为了解决…

μC/OS-II---整理学习1

目录 系统功能系统结构图 μC/OS-II是用 C 语言&#xff08;绝大部分&#xff09;和汇编语言&#xff08;与处理器密切相关的代码&#xff09;编写的。 系统功能 实时内核&#xff1a;μC/OS-II—内核&#xff1a;任务调度&#xff08;oc_core.c&#xff09;任务管理&#xf…

Python爬虫实战(进阶篇)—7获取每日菜价(附完整代码)

文章目录 专栏导读背景前期准备1、网址&#xff1a;2、分析&#xff1a; 请求url、请求方法、请求参数测试一个完整代码写入Excel视频展示不足&#xff1a;结尾 专栏导读 &#x1f525;&#x1f525;本文已收录于《Python基础篇爬虫》 &#x1f251;&#x1f251;本专栏专门针…