(最近由于受到诸位ACM大牛的打击,所以练程序比较频繁,CSDN有点儿高产似母猪)
下面正文:
题目:
这道题其实就是简单的字符串比较,但是由于题目中的时间限制,此题中只能尽量在一次遍历中完成对字符串检索。
(自己最初做都时候没考虑好逻辑导致后面不得不完全更改思路,暴风哭泣.jpg)
思路:
定义两个数组:一个用来存放输入单词(字符串)的char型数组s,另一个用于存放遍历参数的int型数组m。
一次遍历的过程中,比较第i个字符与i-1个字符,若等,则m[i]等于m[i-1]+1,不等于,则m[i]=1,最后每设置一个m[i]的值后,比较m[i]与k值大小,若大于等于,则count计数加一,最后,每遍历一个单词,则打印输出cnt值。
直接上代码:
#include <cstdio>
#include <cstring>
using namespace std;
int main(void) {
int n,k,len;
int cnt = 0;
int m[1005];
char s[1005];
scanf("%d",&n);
while(n--){
cnt = 0;
scanf("%s",s);
len = strlen(s);
scanf("%d",&k);
m[0]=1;
if(k==1){
cnt=1;
}
for(int i=1;i<len;i++){
if(s[i]!=s[i-1]){
m[i]=1;
}else{
m[i]=m[i-1]+1;
}
if(m[i]>=k) cnt++;
}
printf("%d\n",cnt);
}
return 0;
}