题目大意就是给你一个字符串,还有一个等级K,K的具体含义就是连续的相同的字符串的个数,题目就是要求长度为k的,字符一样的子串有几个,如果k == 2 就是比如aa, bb, cc, dd, ..... 这样的,注意不能重叠。
因为题目给的数据范围在2e5,所以枚举从a到z,然后取最大值就好了。
代码如下
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
int n,k,ret = 0,cnt;
char str[200010];
scanf("%d %d",&n,&k);
scanf("%s",str);
int ans=0;
for(int x = 0;x < 26; x++)
{
char ch = (char)(x + 'a');
ret = 0,cnt = 0;
for(int i = 0;i < n; i++)
{
if(str[i] != ch)
{
int y = cnt / k;
ret += y;
cnt = 0;
}
else
cnt++;
}
int y = cnt / k;
ret += y;
ans=max(ret,ans);
}
cout << ans;
return 0;
}
标签:1105B,int,ans,CodeForces,ret,char,Zuhair,cnt,include From: https://blog.51cto.com/u_16131191/6356108