题目描述:
有长度为\(n\)的字符串,仅包含小写字母。
小信想把字符串变成只包含一种字母。他每次可以选择一种字符\(c\),然后把长度最多为\(m\)的子串中的字符都替换成\(c\)。小信想知道最少需要操作几次能让字符串只包含一种字母。
题意简述
给定一个长度为\(n\)的小写字母串,每次可以将长度为的子串变成任意小写字母c,问最少几次可以让字母串仅包含一种字母。
解题思路
定义变量\(ans\)为最终操作次数,\(cnt\)为枚举时的操作次数。
枚举\(26\)个字母分别为操作后字母串的情况,对原字母串每个长度为\(m\)的区间\(\left[l,r \right]\)进行判断,如果不是由当前所枚举字母构成的字母串,就将其修改为所枚举字母,并将当前操作次数\(cnt+1\)枚举完一个字母后用\(cnt\)对最终答案\(ans\)取最小值,最后输出\(ans\)即可。
\(AC\ \ Code\)
#include<bits/stdc++.h>
using namespace std;
int n,m,ans=1e9;
string s;
int main()
{
ios::sync_with_stdio(0);
cin>>n>>m>>s;
for(int i('a');i<='z';++i)
{
int j=0,cnt=0;
while(j<n)s[j]!=i?(++cnt,j+=m):++j;
ans=min(ans,cnt);
}
printf("%d",ans);
return 0;
}
标签:小写字母,题解,字母,T2,int,枚举,ans,长度
From: https://www.cnblogs.com/988176-/p/18309312