字节跳动ZJ3->编程题二

编程题2

http://www.nowcoder.com/questionTerminal/dcc301bc11a7420b88afdbd272299809

1. 思路

  1. 做法是控制满足条件的区间大小
  2. 编码思路来源于nbgao,下面是加了注释的源代码

2. 源代码

#include <bits/stdc++.h>
using namespace std;

int main(){
    string s;
    int n=0, m=0;
    cin>>n>>m;
    cin>>s;
    int l=0, r=0, a=0, b=0, Max=0;//控制左右移动区间
    for(;r<=n;r++){//r右边界一直移动
        if(s[r]=='a')//当前为a 则a数量++
            a++;
        else
            b++;//为b 则b数量++
        if(a>m && b>m){//a超出m的数量 并且b超出m数量的这一瞬间
            Max = max(Max, r-l);//确定当前区间大小
            if(s[l]=='a')//查看左边第一个是a还是b 准备区间右移一格 同时去掉积累量 再进行循环查看
                a--;
            else
                b--;
            l++;
        }
    }
    Max = max(Max, r-l);
    cout<<Max<<endl;
    return 0;
}
全部评论

相关推荐

03-14 18:48
重庆大学 C++
点赞 评论 收藏
分享
牛客464620405号:随便投,随便找,中国经过40多年的改革开放,人才缺口和职位空缺是巨大的,中国现在属于遍地黄金的年代,属于90后和00大机遇的时代
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务