经典例题 字符串压缩详解

任务描述

  字符串压缩,某个字符 x 在字符串中连续出现 n(n>1) 次,则将这 n 个字符替换为 "nx" 的形式;否则保持不变,如:Mississippi==>Mi2si2si2pi

输入

  输入 1 个字符串。

输出

   输出压缩后的字符串。

测试说明

测试用例

  输入:    Mississippi   输出:    Mi2si2si2pi

#include<stdio.h>
void cyr(char *p);
int main()
{
    int i,n;
    char p[100];
    gets(p);
    cyr(p);
    puts(p);
    return 0;
}
void cyr(char *p)
{
    int i,n;//定义变量n用来记录重复字符的个数
    char *q=p;//定义指针变量
    while(*p!='\0')//当数组不到最后一位时
    {
        n=1;//需要注意的是,这里的n=1不能放在while之前,那样的话记录下一字符时无法清零
        while(*p==*(p+n))//当当前字符和下一字符相等时
        {
            n++;
        }
        }
        if(n>=2)
        {
            *q++=n+'0';//这里是转化为字符型
        }
        *q++=*(p+n-1);//这里是将字母放在数字后面,如果不加的话就只有重复的次数而没有字符
        p=p+n;//跳跃到重复字符截止的地方,开始统计下一个字符
    }
    *q='\0';//结束标志
}

 while(*p==*(p+n))
        {
            n++;
        }

 需要注意的是,这里while中*(p+n)的括号不可以省略

猜你喜欢

转载自blog.csdn.net/weixin_73534885/article/details/128514834