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

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.mfbz.cn/a/153680.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

阿里5年经验之谈 —— 记录一次jmeter压测的过程!

在软件架构与中间件实验的最后&#xff0c;要求进行非功能测试&#xff0c;那得非压力测试莫属了。虽然之前学习秒杀项目的时候看视频里面用过jmeter&#xff0c;但没有自己实操过&#xff0c;趁着这次机会&#xff0c;使用一下。 QPS与TPS 1、TPS&#xff1a; Transactions …

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

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

小望电商通:无代码开发,轻松实现电商平台、客服系统和用户运营的集成

无缝连接电商系统和客服系统&#xff0c;轻松实现集成 小望电商通是一款具有突破性的电商解决方案。它为电商行业提供了新的可能性&#xff0c;尤其在电商系统和客服系统的无缝连接和集成上具有显著优势。小望电商通的运用&#xff0c;使企业无需进行任何API开发&#xff0c;就…

单区域OSPF配置

配置命令步骤&#xff1a; 1.使用router ospf 进程ID编号 启用OSPF路由 2.使用network 直连网络地址 反掩码 area 0 将其归于区域0 注意&#xff1a;1.进程ID编号可任意&#xff08;1-65535&#xff09;2.反掩码用4个255相减得到 如下图&#xff0c;根据给出要求配置OSPF单区…

IDEA插件推荐:Apipost-Helper

IDEA是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它可以帮助开发人员更加高效地编写、调试和部署软件应用程序。我们在编写完接口代码后需要进行接口调试等操作&#xff0c;一般需要打开额外的调试工具。 今天给大家介绍一款IDEA插件&#xff1a;Api…

LeetCode(20)最长公共前缀【数组/字符串】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 14. 最长公共前缀 1.题目 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 ""。 示例 1&#xff1a; 输入&#xff1a;strs ["flower","flow&qu…

flutter TabBar指示器

第一层tabView import package:jade/configs/PathConfig.dart; import package:jade/customWidget/MyCustomIndicator.dart; importpackage:jade/homePage/promotion/promotionPost/MyPromotionListMainDesc.dart; import package:jade/homePage/promotion/promotionPost/MyPr…

CANoe-Trace窗口介绍

1、什么是Trace窗口 Trace窗口的目的是在测量期间(CANoe运行时)记录总线活动。在测试设置(Measurement Setup)中的Trace窗口的输入处接收到的所有消息都在Trace输出窗口中显示为文本。 当然,除了总线报文数据外,还有一系列的其他事件可以输出到Trace窗口,例如: 错误事…

【网络基础实战之路】基于不同协议间使用重发布路由策略

系列文章传送门&#xff1a; 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 【网络基础实战之路】基于…

香港优才计划获批概率跌破20%,拿香港身份越来越难了?

香港优才计划获批概率跌破20%&#xff0c;拿香港身份越来越难了&#xff1f; 截止10月31日&#xff0c;香港各类人才引进计划共收到18万4538宗申请&#xff0c;获批11万5741宗&#xff0c;整体“获批率”为62.72%。 具体到项目获批率&#xff1a; ①优才计划共收到63979宗申请&…

自动化测试介绍和分类,看这一篇就够了

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

中小商家,也能在抖音电商找到星辰大海

“你这背景太假了&#xff01;” 横穿中国&#xff0c;从江苏闯荡到新疆创业卖蜂蜜的刘元杰&#xff0c;怎么也没有预料到这句话会成为热梗。他本人在直播间各种和网友之间“极限拉扯”&#xff0c;用扔水桶、扔石头、召唤新疆大叔骑马打招呼等操作自证背景的真实性。这让他的…

git宝藏干货

git命令 怎样删除gitee仓库 Gitee上传代码 在Gitee上创建该项目的远程仓库 进入你想要上传的文件目录下&#xff0c;右键单击空白处&#xff0c;点击Git Bash Here 命令行输入下列命令&#xff0c;初始化本地仓库 git init 添加项目目录下所有文件至本地仓库 git add . …

2019年五一杯数学建模C题科创板拟上市企业估值解题全过程文档及程序

2019年五一杯数学建模 C题 科创板拟上市企业估值 原题再现 科创板在首届中国国际进口博览会开幕式上宣布设立&#xff0c;是独立于现有主板市场的新设板块。设立科创板并试点注册制是提升服务科技创新企业能力、增强市场包容性、强化市场功能的一项资本市场重大改革举措&…

MTK联发科MT8766核心板 4G智能模块安卓开发板方案定制

MT8766 是一款基于 MTK 平台工业级高性能、可运行 android12.0 操作系统的 4G智能模块,三款模块硬件是相互兼容&#xff0c;支持 LTE-FDD&#xff08;CAT-7&#xff09;/LTE-TDD&#xff08;CAT-7&#xff09;/WCDMA/TD-SCDMA/EVDO/GSM 等多种制式&#xff1b;支持 WiFi5 802.1…

景联文科技入选量子位智库《中国AIGC数据标注产业全景报告》数据标注行业代表机构

量子位智库《中国AIGC数据标注产业全景报告》中指出&#xff0c;数据标注处于重新洗牌时期&#xff0c;更高质量、专业化的数据标注成为刚需。未来五年&#xff0c;国内AI基础数据服务将达到百亿规模&#xff0c;年复合增长率在27%左右。 基于数据基础设施建设、大模型/AI技术理…

释放机器人潜力,INDEMIND深耕底层技术

市场转暖&#xff0c;但攘外需要同时安内。 市场降温之后&#xff0c;正迎来拐点 疫情之后&#xff0c;经济逐渐下行&#xff0c;服务机器人的“好日子”也随之结束&#xff0c;整个行业都在动荡中经历渡劫。根据TE智库报告显示&#xff0c;从2022年开始&#xff0c;我国服务…

纺织机械对直线模组的要求有哪些?

直线模组在纺织机械中的应用越来越广泛&#xff0c;对其性能和精度要求也越来越高&#xff0c;那么什么样的纺织机械模组才可以满足纺织机械的使用需求呢&#xff1f; 1、高精度&#xff1a;直线模组需要具备高精度的运动和定位能力&#xff0c;以确保纺织机械能够精确控制纱线…

Notion平替工具AFFINE知识库如何本地部署与公网远程访问

公网访问全能知识库工具AFFINE&#xff0c;Notion的免费开源替代品 前言 AFFiNE 是一个全新的开源项目&#xff0c;旨在克服 Notion 和 Miro 在安全和隐私方面的一些局限性。它的设计目标是帮助用户将会议记录、待办事项、文档中的目标、视频会议白板上的头脑风暴以及客户访谈…

精选112个炫酷大数据可视化大屏模板(含源码),拿走即用

112套大数据可视化炫酷大屏Html5模板&#xff1b;包含行业&#xff1a;智慧社区、智慧物业、政务系统、智慧交通、智慧工程、智慧医疗、智慧金融银行、智慧农业等&#xff0c;全网最新、最多&#xff0c;最全、最酷、最炫大数据可视化模板。 可视化大屏预览及源码获取地址&…