字节跳动校招笔试题 ab序列最长序列

题目描述

有一个仅包含’a’和’b’两种字符的字符串s,长度为n,每次操作可以把一个字符做一次转换(把一个’a’设置为’b’,或者把一个’b’置成’a’);但是操作的次数有上限m,问在有限的操作数范围内,能够得到最大连续的相同字符的子串的长度是多少。

输入描述:

第一行两个整数 n , m (1<=m<=n<=50000),第二行为长度为n且只包含’a’和’b’的字符串s。

输出描述:

输出在操作次数不超过 m 的情况下,能够得到的 最大连续 全’a’子串或全’b’子串的长度。

示例1

输入

8 1
aabaabaa

输出

5

说明

把第一个 'b' 或者第二个 'b' 置成 'a',可得到长度为 5 的全 'a' 子串。

这道题目是由那道01串的题目改变来的。 只需判断两次把a变成b,以及把b变成a

用一个数组记录下a或者b出现

#include 
#include 
#include 
using namespace std;

/* aabaabaa
   01234567
   
   
*/
// 在str中改变m个字母c得到的最大值
int change(string& str, int m, char c)
{
    vector v;
    for(int i=0;i>n>>m;
    string str;
    cin>>str;
    int res = max(change(str,m,'a'),change(str,m,'b'));
    cout<

 

你可能感兴趣的:(算法)