任务描述
字符串压缩,某个字符 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)的括号不可以省略