给定一个字符串,在字符串中找到第一个连续出现至少k次的字符。
输入格式:
第一行包含一个正整数k,表示至少需要连续出现的次数。1 <= k <= 100。
第二行包含需要查找的字符串。字符串长度在1到100之间,且不包含任何空白符。
输出格式:
若存在连续出现至少k次的字符,输出该字符;否则输出NO。
#include <stdio.h>
int main()
{
char a[100],ch;
int i,count=0,k,j;
scanf("%d",&k);
gets(a);
for(i=0;a[i]!='\0';i++)
{
for(j=i;j<i+k-1;j++)
if(a[j]==a[j+1])
{
count++;
ch=a[j];
}
}
if(count>0)
printf("%d",ch);
else
printf("No");
return 0;
}
count 不要光++呀,如果相等就++,如果count>k就可以直接break了
如果前后不等了,要把count清零啊
#include <stdio.h>
int main()
{
char a[100],ch;
int i,count=0,k,j;
scanf("%d",&k);
gets(a);
for(i=1;a[i]!='\0';i++)
{
if(a[i]==a[i-1])
{
count++;
ch=a[i];
}
else
count=0;
if(count>k)
break;
}
if(count>k)
printf("%d",ch);
else
printf("No");
return 0;
}
#include <stdio.h>
int main()
{
char a[100], ch;
int i, count = 0, k, j;
scanf("%d\n", &k);
gets(a);
for (i = 0; a[i] != '\0'; i++)
{
for (j = i; j < i + k - 1; j++)
if (a[j] == a[j + 1])
{
count++;
ch = a[j];
}
}
if (count > 0)
printf("%c", ch);
else
printf("No");
return 0;
}
思路不对
只讲思路,你自己尝试实现一遍。
合理的思路是,每次取一个字符,然后跟上一个字符对比。如果相同,则计数器cnt++,如果不同,则计数器cnt=1;直到cnt==k,则跳出循环,返回k,否则最后输出NO