链接: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; }