首页 > 试题广场 >

编程题2

[编程题]编程题2
  • 热度指数:12775 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
有一个仅包含’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' 子串。
头像 牛客题解官
发表于 2020-06-05 18:25:29
题解 难度:中等 知识点:字符串的最长子串问题 分析 方法1:利用下标位置的普通方法,分a、b两种情况处理(较简单) 利用字符下标计算间隔长度,遍历字符串s,以b换a举例:返回所有b的索引值保存在数组中,存为数组indexes=[idx1,idx2,…],(a换b一样)。计算m个b的最大间隔区间,如 展开全文
头像 fred-coder
发表于 2021-10-17 14:50:54
本题在可替换字符的情况下,求解连续相同的字符长度,可使用双指针的思路进行求解; 不越界的条件为区间的长度 - 区间内的最大字符数 <= 可替换的上线次数,超过条件则左指针移动,最终的最大值为总长度 - 左指针的偏移量,也可在循环中判断,代码如下 from collections import 展开全文
头像 MrZ_001
发表于 2021-10-30 10:51:27
const arr = readline().split(" "); const inputStr = readline(); const n = parseInt(arr[0]); const&nb 展开全文
头像 Louie.Ye
发表于 2021-03-20 15:22:40
1. 思路 做法是控制满足条件的区间大小 编码思路来源于nbgao,下面是加了注释的源代码 2. 源代码 #include <bits/stdc++.h> using namespace std; int main(){ string s; int n=0, m=0 展开全文
头像 街角式,..爱念
发表于 2023-02-04 20:03:20
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; int count_max_len(char f,const string& s,int m,int n 展开全文
头像 农村错题集
发表于 2022-04-15 17:42:23
滑动窗口/C++ 直接上答案滑动一下? #include <iostream> #include <string> using namespace std; int getMax(string& s, int m, char target){ int le 展开全文
头像 牛客755237747号
发表于 2023-08-03 16:22:51
#include <iostream> #include <unordered_map> using namespace std; int main() { int n,m; string str; cin>>n>>m> 展开全文
头像 猿人代码
发表于 2023-08-24 11:19:20
我认为这道题应该这样这样再这样,然后这样
头像 牛客136122074号
发表于 2023-11-17 11:03:58
#include <stdio.h> #include <stdlib.h> int windowSolve(char* str, int oper, int len) { int res = -2147483648; //MIN int left = 0, rig 展开全文
头像 17c89
发表于 2023-12-03 13:29:18
import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner in = new Scanner(System.in); while 展开全文