链接:https://codeforces.com/contest/1105/problem/B
题意:
给一个字符串和k,连续k个相同的字符,可使等级x加1,
例:8 2 aaacaabb
则有aa aa 即x=2。
求最大的k
思路:
第一眼想的是诶个查找,但是绝对会T,就没做,过一个小时才想到可以直接遍历,记录每个字符对应的最大x即可。
代码:
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 200000+10;
char s[MAXN];
int vis[26];
int main()
{
int n,k;
scanf("%d%d",&n,&k);
scanf("%s",s+1);
int now = 0;
for (int i = 1;i<=n;i++)
{
if (s[i] == s[i-1] || i == 1)
{
now++;
if (now == k)
{
vis[s[i] - 97]++;
now = 0;
}
}
else
{
now = 1;
if (now == k)
{
vis[s[i] - 97]++;
now = 0;
}
}
}
int sum = 0;
for (int i = 0;i<26;i++)
sum = max(sum,vis[i]);
cout << sum << endl;
return 0;
}