给定一个字符串,在字符串中找到第一个连续出现至少k次的字符。

问题遇到的现象和发生背景

给定一个字符串,在字符串中找到第一个连续出现至少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