题目描述:

给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 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:替换后的最长重复字符相关推荐

  1. leetcode 424. 替换后的最长重复字符(滑动窗口)

    给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次.在执行上述操作后,找到包含重复字母的最长子串的长度. 注意:字符串长度 和 k 不会超过 104 ...

  2. LeetCode 424. 替换后的最长重复字符(双指针+滑动窗口)

    题目描述 给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次.在执行上述操作后,找到包含重复字母的最长子串的长度. 注意: 字符串长度 和 k 不会 ...

  3. 2022-2-12 Leetcode 424.替换后的最长重复字符

    class Solution {public:int characterReplacement(string s, int k) {vector<int> num(26);//建立 has ...

  4. leetcode 424. Longest Repeating Character Replacement | 424. 替换后的最长重复字符(Java)

    题目 https://leetcode.com/problems/longest-repeating-character-replacement/ 题解 class Solution {public ...

  5. 力扣--替换后的最长重复字符

    力扣–替换后的最长重复字符 文章目录 力扣--替换后的最长重复字符 一.题目描述 二.分析 三.代码 一.题目描述 二.分析 题目的意思比较清楚,不过可能的情况有很多,不可能用代码去寻找最佳的替换位置 ...

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

    替换后的最长重复字符 给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换k次.在执行上述操作后,找到包含重复字母的最长子串的长度. 注意:字符串长度 和k不 ...

  7. 重复次数最多的 子串_每日算法系列【LeetCode 424】替换后的最长重复字符

    题目描述 给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次.在执行上述操作后,找到包含重复字母的最长子串的长度. 示例1 输入: s = &quo ...

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

    给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次.在执行上述操作后,找到包含重复字母的最长子串的长度. 注意: 字符串长度 和 k 不会超过 10 ...

  9. Leetcode每日一题:424.longest-repeating-character-replacement(替换后的最长重复字符)

    思路:参考题解:seerJJJ发布的题解 不必纠结maxL到底要不是随着窗口的变化而变化,maxL始终代表记录过的一个窗口中出现最多字符的个数,所以它肯定要么保持不变,要么增大:每次右移后都找滑窗中出 ...

最新文章

  1. for循环递减_判断语句_循环语句
  2. win32下PE文件分析之节表
  3. day25 Python四个可以实现自省的函数,反射
  4. Spark常用RDD算子 - saveAsTextFile、saveAsObjectFile 可保存到本地文件或hdfs系统中
  5. 【90】沟通:跨部门管理
  6. pycharm中from xx import xx报错:Unresolved reference
  7. Python发送文本邮件
  8. sysAK(青囊)系统运维工具集:如何实现高效自动化运维?| 龙蜥技术
  9. 最新html取消dynsrc属性无效,HTML属性标签2
  10. BOW和LSH的一点理解
  11. 【优化算法】多目标蜻蜓优化算法(MODA)【含Matlab源码 1350期】
  12. Restsharp 与 unity3D WWW
  13. IoT黑板报0220:三星5G商用关键设备开发完成
  14. 近世代数:置换群、陪集指数和Lagrange定理
  15. U盘插入计算机不显示图标,Win7下将U盘插入电脑后不显示图标的解决方法
  16. 独家丨Web3风向从NFTs吹向DAOs?一季度DAO发展回顾
  17. 高精度地图2019-2020年或可落地
  18. 第46周收录128起融资,国内硬件新三板扎堆,大额融资激增,国内资本出海活跃 | 潜在周报
  19. java.lang.IllegalArgumentException 异常报错完美解决
  20. 2018年11月总结,12月计划

热门文章

  1. Arduino系列硬件资源介绍
  2. IE11浏览器:请不要再叫我IE,谢谢
  3. 【转】MYSQL入门学习之七:MYSQL常用函数
  4. uva10256 凸包
  5. [转]Ajax跨域访问问题-方法大全
  6. RTT的线程同步篇——互斥量
  7. RTT时钟管理篇——软硬定时器理解(二)
  8. 华为云苏光牛:生态建设是数据库产业发展非常重要的一环
  9. 直播+抽奖丨eygle等4位大咖讲述DBA职业发展必备软实力
  10. 直播预告丨MySQL中的索引探究