2018-06-29 22:56:24

问题描述:

问题求解:

本题是一条字符串问题,且是求Optimal,自然最初想到的是使用DP来进行求解,但是问题就是如果采用DP的话,前一个状态也太多了,和替换了多少了k值相关,因此从这个角度来说,使用DP来处理本题是不太合适的。

那么,另一个处理的手段滑动窗口就呼之欲出了。

在本题中窗口[start, end]来维护,其中只要窗口长度 - 窗口中出现字符最多的个数 <= k则当前窗口的长度符合题意,只要找出最长的符合条件的窗口即可。

问题是如果出现了上述条件不满足的情况,那么就需要减小窗口大小使之满足条件。

这里有一个trick,就是在减小窗口大小的时候是不需要对maxcnt的大小进行修改的,因为如果要得到一个比当前的res更好的解,那么势必窗口大小要增大,同时maxcnt也要增大。因此这里不需要重新遍历一遍来获得新的窗口中的maxcnt。

    public int characterReplacement(String s, int k) {
int res = 0;
int start = 0;
int[] cnt = new int[26];
int maxcnt = 0;
for (int end = 0; end < s.length(); end++) {
maxcnt = Math.max(maxcnt, ++cnt[s.charAt(end) - 'A']);
if (end - start + 1 - maxcnt > k) {
cnt[s.charAt(start++) - 'A']--;
}
res = Math.max(res, end - start + 1);
}
return res;
}

Longest Repeating Character Replacement的更多相关文章

  1. Leetcode: Longest Repeating Character Replacement && G 面经

    Given a string that consists of only uppercase English letters, you can replace any letter in the st ...

  2. [Swift]LeetCode424. 替换后的最长重复字符 | Longest Repeating Character Replacement

    Given a string that consists of only uppercase English letters, you can replace any letter in the st ...

  3. G 面经 && Leetcode: Longest Repeating Character Replacement

    Given a string that consists of only uppercase English letters, you can replace any letter in the st ...

  4. LeetCode——Longest Repeating Character Replacement

    1. Question Given a string that consists of only uppercase English letters, you can replace any lett ...

  5. leetcode424 Longest Repeating Character Replacement

    """ Given a string s that consists of only uppercase English letters, you can perform ...

  6. [LeetCode] Longest Repeating Character Replacement 最长重复字符置换

    Given a string that consists of only uppercase English letters, you can replace any letter in the st ...

  7. LeetCode 424. Longest Repeating Character Replacement

    原题链接在这里:https://leetcode.com/problems/longest-repeating-character-replacement/description/ 题目: Given ...

  8. 【leetcode】424. Longest Repeating Character Replacement

    题目如下: Given a string that consists of only uppercase English letters, you can replace any letter in ...

  9. 【LeetCode】424. 替换后的最长重复字符 Longest Repeating Character Replacement(Python)

    作者: 负雪明烛 id: fuxuemingzhu 公众号:每日算法题 本文关键词:LeetCode,力扣,算法,算法题,字符串,双指针,刷题群 目录 题目描述 题目大意 解题方法 双指针 代码 欢迎 ...

  10. 424. Longest Repeating Character Replacement

    以最左边为开始,往右遍历,不一样的个数大于K的时候停止,回到第一个不一样的地方,以它为开始,继续.. 用QUEUE记录每次不一样的INDEX,以便下一个遍历开始, 从左往右,从右往左各来一次..加上各 ...

随机推荐

  1. 在MS SQL删除重复行的几种方法

    1.如果有ID字段,就是具有唯一性的字段         delect   table   where   id   not   in   (             select   max(id) ...

  2. 网络编程—代码—UDP数据报传输

    UDP:数据报传输 1.接收端 public class Udps { //接收端 public static void main(String[] args) throws IOException ...

  3. Verilog篇(三)仿真原理

    首先引入一个例子: `timescale  1ns/100ps module   TB;                                                         ...

  4. sql可重复执行语句例子

    1.添加字段 SET @add_key_type_to_report = (SELECT IF( (SELECT count(1) FROM INFORMATION_SCHEMA.COLUMNS WH ...

  5. 关于Context []startup failed due to previous errors

    文章转自:http://blog.sina.com.cn/s/blog_49b4a1f10100q93e.html 框架搭建好后,启动服务器出现如下的信息: log4j:WARN No appende ...

  6. 单片机电平转换电路5V 3.3V串口通讯等(转)

    源: 单片机电平转换电路5V 3.3V串口通讯等

  7. PT100高精度测温电路 AD623+REF3030(转)

    源: PT100高精度测温电路 AD623+REF3030(很稳定)

  8. SQL学习之Can't connect to MySQL server on localhost (10061)

    最近升级 了系统,开机后连接MySQL报错,Can't connect to MySQL server on localhost (10061): 估计是升级系统清除了以前的缓存设置,网上很多方法是命 ...

  9. Centos下安装git高版本2.1.2

    安装依赖软件 # yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc # yum in ...

  10. sublime3 离线安装插件

    直接去:https://packagecontrol.io/installation搜索插件,插件一般会有个git网址(格式化html的插件可以用这个:https://github.com/victo ...