LeetCode-424:替换后的最长重复字符
题目描述:
给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次。在执行上述操作后,找到包含重复字母的最长子串的长度。
注意:字符串长度 和 k 不会超过 104。
示例 1:
输入:s = "ABAB", k = 2
输出:4
解释:用两个'A'替换为两个'B',反之亦然。
示例 2:
输入:s = "AABABBA", k = 1
输出:4
解释:
将中间的一个'A'替换为'B',字符串变为 "AABBBBA"。
子串 "BBBB" 有最长重复字母, 答案为 4
思路分析:
一看到最长字符串就想到滑动窗口。
算法流程:
- 右边界先移动找到一个满足题意的可以替换 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,right=0;int maxCount=0,res=0;int[] freq = new int[26];while(right<len){freq[chararray[right]-'A']++;maxCount=Math.max(maxCount,freq[chararray[right]-'A']);right++;if(right-left>maxCount+k){freq[chararray[left]-'A']--;left++;}res=Math.max(res,right-left);}return res;}
}
复杂度分析:
时间复杂度:O(N),这里 N 是输入字符串 S 的长度;
空间复杂度:O(A),这里 A 是输入字符串 S 出现的字符 ASCII 值的范围。
LeetCode-424:替换后的最长重复字符相关推荐
- leetcode 424. 替换后的最长重复字符(滑动窗口)
给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次.在执行上述操作后,找到包含重复字母的最长子串的长度. 注意:字符串长度 和 k 不会超过 104 ...
- LeetCode 424. 替换后的最长重复字符(双指针+滑动窗口)
题目描述 给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次.在执行上述操作后,找到包含重复字母的最长子串的长度. 注意: 字符串长度 和 k 不会 ...
- 2022-2-12 Leetcode 424.替换后的最长重复字符
class Solution {public:int characterReplacement(string s, int k) {vector<int> num(26);//建立 has ...
- leetcode 424. Longest Repeating Character Replacement | 424. 替换后的最长重复字符(Java)
题目 https://leetcode.com/problems/longest-repeating-character-replacement/ 题解 class Solution {public ...
- 力扣--替换后的最长重复字符
力扣–替换后的最长重复字符 文章目录 力扣--替换后的最长重复字符 一.题目描述 二.分析 三.代码 一.题目描述 二.分析 题目的意思比较清楚,不过可能的情况有很多,不可能用代码去寻找最佳的替换位置 ...
- 替换后的最长重复字符
替换后的最长重复字符 给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换k次.在执行上述操作后,找到包含重复字母的最长子串的长度. 注意:字符串长度 和k不 ...
- 重复次数最多的 子串_每日算法系列【LeetCode 424】替换后的最长重复字符
题目描述 给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次.在执行上述操作后,找到包含重复字母的最长子串的长度. 示例1 输入: s = &quo ...
- Leetcode--424. 替换后的最长重复字符
给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次.在执行上述操作后,找到包含重复字母的最长子串的长度. 注意: 字符串长度 和 k 不会超过 10 ...
- Leetcode每日一题:424.longest-repeating-character-replacement(替换后的最长重复字符)
思路:参考题解:seerJJJ发布的题解 不必纠结maxL到底要不是随着窗口的变化而变化,maxL始终代表记录过的一个窗口中出现最多字符的个数,所以它肯定要么保持不变,要么增大:每次右移后都找滑窗中出 ...
最新文章
- for循环递减_判断语句_循环语句
- win32下PE文件分析之节表
- day25 Python四个可以实现自省的函数,反射
- Spark常用RDD算子 - saveAsTextFile、saveAsObjectFile 可保存到本地文件或hdfs系统中
- 【90】沟通:跨部门管理
- pycharm中from xx import xx报错:Unresolved reference
- Python发送文本邮件
- sysAK(青囊)系统运维工具集:如何实现高效自动化运维?| 龙蜥技术
- 最新html取消dynsrc属性无效,HTML属性标签2
- BOW和LSH的一点理解
- 【优化算法】多目标蜻蜓优化算法(MODA)【含Matlab源码 1350期】
- Restsharp 与 unity3D WWW
- IoT黑板报0220:三星5G商用关键设备开发完成
- 近世代数:置换群、陪集指数和Lagrange定理
- U盘插入计算机不显示图标,Win7下将U盘插入电脑后不显示图标的解决方法
- 独家丨Web3风向从NFTs吹向DAOs?一季度DAO发展回顾
- 高精度地图2019-2020年或可落地
- 第46周收录128起融资,国内硬件新三板扎堆,大额融资激增,国内资本出海活跃 | 潜在周报
- java.lang.IllegalArgumentException 异常报错完美解决
- 2018年11月总结,12月计划