牛牛的AC(解题报告)

牛牛的AC

https://www.nowcoder.com/questionTerminal/6309d58571b94aff96951f6a7ee84e7b

对于这个题目来说,我们求的结果就是A串最长或者是C串最长,然后取最大值即可,在找串最长的过程采用two points的方法。我们以求A串最长为例,那么需要做的改变就是将C变为A,在改变的时候采用贪心的方法(由于是对于一个子串的更改,如果要使子串长度最长,那么更改的顺序一定是连续的),然后统计当前区间中有多少个字符C,如果区间中C的个数不大于K,则r++,如果大于k,则l++,直至区间中C的数量不大于k,需要注意的是在每次移动r的时候维护区间长度最大值。
时间复杂度: O(n)
额外空间复杂度: O(1)

class Solution {
public:
    /**
     * 
     * @param k int整型 
     * @param s string字符串 
     * @return int整型
     */
    int cal(int k, string s, char c) {
        int len = s.size(), l = 0, r = 0, tmp = k, ans = 0;
        while(l<len && r<len) {
            while(tmp>=0 && r<len) {
                if(s[r]!=c && tmp==0) break;
                if(s[r] != c) tmp--;
                ans = max(r-l+1, ans);
                r++;
            }
            if(s[l] != c) tmp++;
            l++;
        }
        return ans;
    }
    int Solve(int k, string s) {
        // write code here
        return max(cal(k, s, 'A'), cal(k, s, 'C'));
    }
};
全部评论

相关推荐

Twilight_m...:表格简历有点难绷。说说个人看法: 1.个人基本情况里好多无意义信息,什么婚姻状况、健康状况、兴趣爱好、户口所在地、身份证号码、邮政编码,不知道的以为你填什么申请表呢。 2.校内实践个人认为对找工作几乎没帮助,建议换成和测开有关的项目,实在没得写留着也行。 3.工作经历完全看不出来是干什么的,起码看着和计算机没啥关系,建议加强描述,写点你在工作期间的实际产出、解决了什么问题。 4.个人简述大而空,看着像AI生成,感觉问题最大。“Python,C,C++成为我打造高效稳定服务的得力工具”、“我渴望凭借自身技术知识与创新能力,推动人工智能技术的应用发展,助力社会实现智能化转型”有种小学作文的美感。而且你确定你个人简述里写的你都会嘛?你AI这块写的什么“深入研究”,发几篇顶会的硕博生都不一定敢这么写。而且你AI这块的能力和软测也完全无关啊。个人简述建议写你对哪些技术栈、哪些语言、哪些生产工具的掌握,写的有条理些,而且最好是和测开强相关的。
点赞 评论 收藏
分享
06-26 15:33
青岛工学院 Java
积极的秋田犬要冲国企:他现在邀请我明天面试
点赞 评论 收藏
分享
07-15 18:09
门头沟学院 Java
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务