我想睡觉


私信TA

用户名:beiqian

访问量:4079

签 名:

等  级
排  名 1640
经  验 2631
参赛次数 0
文章发表 18
年  龄 0
在职情况 学生
学  校 武汉理工大学
专  业

  自我简介:

解题思路:单指针检测

注意事项:

  1. cnt初始值为1;

  2. 字符串s大小需要留出‘\0’的位置;

  3. 记得换行;

  4. cnt==1时不输出cnt;

  5. pos记得移动,否则会死循环。



参考代码:

#include <stdio.h>

int main(void)
{
    int N;
    scanf("%d", &N);            //读取字符串数目(输入多少行)
    char s[10001];              //最后留出来的一个位置存放'\0'
    for (int i = 0; i < N; ++i) //进行N次处理,i不作为后续处理中的参数,仅仅作为计数
    {
        scanf("%s", s);        //输入字符串
        int pos = 0, cnt = 1;  //定义一个类似指针的东西(position),从左往右移动,初始化cnt = 1(相同字符的数量)
        while (s[pos] != '\0') //只要pos没指向'\0'对应的项就继续执行
        {
            if (s[pos] == s[pos + 1])
            {
                cnt++; //每次检测到相同的字符就cnt++;
            }
            else
            {
                if (cnt != 1) //若cnt不为1则输出cnt+字符
                    printf("%d%c", cnt, s[pos]);
                else //cnt为1则直接输出字符
                    printf("%c", s[pos]);
                cnt = 1;//恢复cnt的初始值1
            }
            pos++; //pos移动到下一个位置
        }
        printf("\n"); //第一行处理输出完毕,换行
    }
    return 0;
}


 

0.0分

1 人评分

  评论区