zoukankan      html  css  js  c++  java
  • 424. 替换后的最长重复字符

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

    注意:字符串长度 和 不会超过 104。

    示例 1:

    输入:s = "ABAB", k = 2
    输出:4
    解释:用两个'A'替换为两个'B',反之亦然。
    

    示例 2:

    输入:s = "AABABBA", k = 1
    输出:4
    解释:
    将中间的一个'A'替换为'B',字符串变为 "AABBBBA"。
    子串 "BBBB" 有最长重复字母, 答案为 4。


    将任意位置上的字符替换成另外的字符,总共可最多替换 次的符合条件的子字符串
    <=>
    len(substr)-max(Counter(substr))<=k
    <=>
    r-l+1-maxcnt<=k

     py

    TLE 36/37

    class Solution:
        from collections import Counter
        def characterReplacement(self, s: str, k: int) -> int:
            l=r=0
            res=0
            while r<len(s):
                if len(s)-l<res:
                    break
                if r-l+1-max(Counter(s[l:r+1]).values())>k:
                    l+=1
                res=max(res,r-l+1)
                r+=1
            return res

    optimization,use Dictionary===>AC:

    class Solution:
        from collections import Counter
        import string
        def characterReplacement(self, s: str, k: int) -> int:
            l=r=0
            res=0
            maxchar=0
            cnt={}
            for char in ascii_uppercase:
                cnt[char]=0
            while r<len(s):
                if len(s)-l<res:
                    break
                cnt[s[r]]+=1
                maxchar=max(cnt.values())
                if r-l+1-maxchar>k:
                    cnt[s[l]]-=1
                    l+=1
                res=max(res,r-l+1)
                r+=1
            return res

    C++

    class Solution {
    public:
        int characterReplacement(string s, int k) {
            int l=0,r=0,maxchar=0,res=0;
            vector<int>cnt(26);
            while(r<s.size()){
                cnt[s[r]-'A']++;
                for(int i:cnt)maxchar=max(maxchar,i);
                if(r-l+1-maxchar>k){
                    cnt[s[l]-'A']--;
                    l++;
                }
                res=max(res,r-l+1);
                r++;
            }
            return res;
        }
    };
  • 相关阅读:
    android-support-v4.jar 免积分下载
    Android canvast View 代码实例
    Android recording 录音功能 简单使用小实例
    android progressdialog 对话框试用实例
    Android 视频 教程 源码 电子书 网址
    android Notification
    Zookeeper 基本应用及盲点
    Mysql 死锁分析学习
    Mysql 学习总结
    数据库事务的本质
  • 原文地址:https://www.cnblogs.com/xxxsans/p/14362146.html
Copyright © 2011-2022 走看看