LeetCode 424. Longest Repeating Character Replacement
原题链接在这里:https://leetcode.com/problems/longest-repeating-character-replacement/description/
题目:
Given a string that consists of only uppercase English letters, you can replace any letter in the string with another letter at most k times. Find the length of a longest substring containing all repeating letters you can get after performing the above operations.
Note:
Both the string's length and k will not exceed 104.
Example 1:
Input:
s = "ABAB", k = 2 Output:
4 Explanation:
Replace the two 'A's with two 'B's or vice versa.
Example 2:
Input:
s = "AABABBA", k = 1 Output:
4 Explanation:
Replace the one 'A' in the middle with 'B' and form "AABBBBA".
The substring "BBBB" has the longest repeating letters, which is 4.
题解:
类似快慢指针维护substring的方法在Minimum Window Substring里有总结.
随着runner向前推进找出最高frequency word的count. substring整个长度减掉最大的count 就是需要调换的字符数, 若大于k就移动walker.
移动walker时只需要不需要更改maxCount, runner-walker-maxCount自会变小.
Why we don't need to update maxCount, here we only need to care the longest substring, it is maxCount+k.
Thus we only needto care when there is new largert maxCount.
Here while only execuates once, move walker once, it already break the while condition.
Time Complexity: O(s.length()).
Space: O(1).
AC Java:
 class Solution {
     public int characterReplacement(String s, int k) {
         int [] map = new int[256];
         int walker = 0;
         int runner = 0;
         int maxCount = 0;
         int res = 0;
         while(runner < s.length()){
             maxCount = Math.max(maxCount, ++map[s.charAt(runner++)]);
             while(runner-walker-maxCount > k){
                 map[s.charAt(walker++)]--;
             }
             res = Math.max(res, runner-walker);
         }
         return res;
     }
 }
类似Longest Substring with At Most Two Distinct Characters.
LeetCode 424. Longest Repeating Character Replacement的更多相关文章
- 【leetcode】424. Longest Repeating Character Replacement
		题目如下: Given a string that consists of only uppercase English letters, you can replace any letter in ... 
- 424 Longest Repeating Character Replacement 替换后的最长重复字符
		给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次.在执行上述操作后,找到包含重复字母的最长子串的长度.注意:字符串长度 和 k 不会超过 104. ... 
- 424. Longest Repeating Character Replacement
		以最左边为开始,往右遍历,不一样的个数大于K的时候停止,回到第一个不一样的地方,以它为开始,继续.. 用QUEUE记录每次不一样的INDEX,以便下一个遍历开始, 从左往右,从右往左各来一次..加上各 ... 
- 【LeetCode】424. 替换后的最长重复字符 Longest Repeating Character Replacement(Python)
		作者: 负雪明烛 id: fuxuemingzhu 公众号:每日算法题 本文关键词:LeetCode,力扣,算法,算法题,字符串,双指针,刷题群 目录 题目描述 题目大意 解题方法 双指针 代码 欢迎 ... 
- [LeetCode] Longest Repeating Character Replacement 最长重复字符置换
		Given a string that consists of only uppercase English letters, you can replace any letter in the st ... 
- Leetcode: Longest Repeating Character Replacement && G 面经
		Given a string that consists of only uppercase English letters, you can replace any letter in the st ... 
- G 面经 && Leetcode: Longest Repeating Character Replacement
		Given a string that consists of only uppercase English letters, you can replace any letter in the st ... 
- LeetCode——Longest Repeating Character Replacement
		1. Question Given a string that consists of only uppercase English letters, you can replace any lett ... 
- [Swift]LeetCode424. 替换后的最长重复字符 | Longest Repeating Character Replacement
		Given a string that consists of only uppercase English letters, you can replace any letter in the st ... 
随机推荐
- Mysql(基础篇)
			linux下的mysql操作 1.# 打开 MySQL 服务 sudo service mysql start 2.#使用 root 用户登录,密码为空 mysql -u root 3.创建数据库 C ... 
- MySQL之长连接、短连接、连接池
			当数据库服务器和客户端位于不同的主机时,就需要建立网络连接来进行通信.客户端必须使用数据库连接来发送命令和接收应答.数据.通过提供给客户端数据库的驱动指定连接字符串后,客户端就可以和数据库建立连接了. ... 
- Web应用体系结构
			容器 Servlet没有main()方法,它们受控于另一个Java应用,这个Java应用称为容器(Container).我们最常见的tomcat就是这样一个容器. Web服务器应用(如Apache)得 ... 
- JSP 异常处理
			JSP 异常处理 当编写JSP程序的时候,程序员可能会遗漏一些BUG,这些BUG可能会出现在程序的任何地方.JSP代码中通常有以下几类异常: 检查型异常:检查型异常就是一个典型的用户错误或者一个程序员 ... 
- 简单的HelloWorld
			简单的HelloWorld 步骤: -加入jar包 -在web.xml中配置DispatcherServlet -加入Spring MVC的配置文件 新建文件springmvc.xml: -编写处理请 ... 
- IOS UI-瀑布流(UICollectionView)
			ViewController.m // // ViewController.m // IOS_0227_瀑布流 // // Created by ma c on 16/2/27. // Copyrig ... 
- 发送垃圾邮件的僵尸网络——药物(多)、赌博、股票债券等广告+钓鱼邮件、恶意下载链接、勒索软件+推广加密货币、垃圾股票、色情网站(带宏的office文件、pdf等附件)
			卡巴斯基实验室<2017年Q2垃圾邮件与网络钓鱼分析报告> 米雪儿 2017-09-07 from:http://www.freebuf.com/articles/network/1465 ... 
- css去掉input记住密码的黄色
			input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autof ... 
- js中字符串与数组的相互转换
			<!doctype html> <html> <head> <meta charset="utf-8"> <title> ... 
- hdu3488
			题解: 首先把每一个点拆到两边 然后做KM求最大 吧没一条边相反即可 代码: #include<cstdio> #include<cmath> #include<algo ... 
