本题要求实现一个字符串压缩的简单函数。压缩规则是:如果某个字符x连续出现n(n>1)次,则将这n个字符x替换为nx的形式;否则保持不变。
函数接口定义:void zip( char *p );
函数zip对p指向的字符串进行压缩操作。
Mississippi
输出样例:Mi2si2si2pi
源代码 void zip( char *p ){ int i=0,cout=1,j=0,m; int len=strlen(p); //printf("%dn",len); char place[len+100],current; for(m=0;m<len;m++) { current=p[m]; if(p[m]==p[m+1]) //&&p[m+1]!=' ' cout++; else if(p[m]!=p[m+1]) { if(cout==1) { p[j++]=p[m];cout=1; } else if(cout>1&&cout<=9) { p[j++]=cout+'0'; p[j++]=current; cout=1; } else if(cout>=10) //注意! { int part; part=cout%10; cout=cout/10; p[j++]=cout+'0'; p[j++]=part+'0'; p[j++]=current; cout=1; } } } p[j]=' ';}