11:连续出现的字符
总时间限制:
1000ms
内存限制:
65536kB
描述
给定一个字符串,在字符串中找到第一个连续出现至少k次的字符。
输入
第一行包含一个正整数k,表示至少需要连续出现的次数。1 <= k <= 1000。
第二行包含需要查找的字符串。字符串长度在1到1000之间,且不包含任何空白符。
输出
若存在连续出现至少k次的字符,输出该字符;否则输出No。
样例输入
3
abcccaaab
样例输出
c
题解:
根据此题可知:
1.此题需要用字符串,并且应将字符串开在main主函数外
2.用一个变量(sum)储存连续字符出现的次数
3.并同时用字符变量(c)
4.用for循环来寻找连续字符
a) 应在循环前用strlen函数来确定循环边界值并用变量(l)储存(同文件:#iinclude<cstring)
b) 此循环应从0开始,即:i=0;i<=l;i++;
c) 循环内:
i. 用if语句来判断c[i]与a是否相同
1. 相同:sum++;
2. 不相同:
a) 重新确定a
b) 令sum重新等于1
ii. 然后把sum与k,当k与sum相等时,就可以输出a了
iii. 输出之后便直接Return
5.特殊情况:
a) 当k等于1时,需要直接输出第一个输入的字符且不用执行1、2、3、4步
b) 当k等于0时,需要输出No
程序如下:
#include<cstdio>
#include<cstring>
char c[1001];
int main()
{
freopen("11.in","r",stdin);
char a;
int sum,i,l,k;
scanf("%d",&k);
scanf("%s",c);
l=strlen(c);
a=c[0];
sum=1;
if(k==1)
printf("%c",a);
else
{
for(i=1;i<l;i++)
{
if(c[i]==a)
sum++;
else
{
a=c[i];
sum=1;
}
if(sum>=k)
{
printf("%c",a);
return 0;
}
}
printf("NO");
}
}