问题描述:有一种简单的字符串压缩算法,对于字符串中连续出现的同一个英文字符,用该字符加上连续出现的次数来表示(连续出现次数小于3时不压缩)。
请设计一个程序,采用该压缩方法对字符串压缩并输出。请编写一个函数compress,采用该压缩方法对字符串src进行压缩。函数定义如下:
char *compress(char *src);
返回值:
指向压缩后的字符串数据
参数:
src:输入/输出参数,输入表示待压缩字符串,输出表示压缩后的字符串
想问一下为什么我的结果会有重复的
这是代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char *compress(char *src);
int main()
{
char src[100];
scanf("%s",src);
char *ps = compress(src);
puts(ps);
return 0;
}
char *compress(char *src){
char lec[100];
int i,j=0,s=1;
for (i=0;i<strlen(src);i++){
if (*(src+i)==*(src+i+1))
s++;
if (*(src+i)!=*(src+i+1)){
if (s>=3&&s<=9)
lec[j]=*(src+i),lec[j+1]=s+'0',j=j+2;
else if (s>9)
lec[j]=*(src+i),lec[j+1]=s/10+'0',lec[j+2]=s%10+'0',j=j+3;
else if (s=2)
lec[j]=*(src+i-1),lec[j+1]=*(src+i),j=j+2;
else if (s=1)
lec[j]=*(src+i),j=j+1;
s=1;
}
}
strcpy(src,lec);
}