#include<stdio.h>
#include<string.h>
int zigString(const char *stringInput,char *stringOut)
{
#ifdef DEBUG
if(NULL==stringInput)
return 0;
#endif
const char *inString=stringInput;
char *outString=stringOut;
int count=1;
int i=0;
int j=0;
int k=strlen(inString);
for(i=0;i<k;i++)
{
if(inString[i]==inString[i+1])
count++;
else
{
if(1!=count)
{
outString[j]=count+'0';
j++;
outString[j]=inString[i];
j++;
}
else
{
outString[j]=inString[i];
j++;
}
count=1;
}
}
outString[k]='\0';
return 0;
}
int main()
{
char input[100]={"abbbbccccddddaaaaa"};
char output[100]={0};
zigString(input,output);
printf("%s\n",input);
printf("%s\n",output);
return 0;
}
改成用指针表示,函数实现方法相同:
#include<stdio.h>
#include<string.h>
int zigString(const char *stringInput,char *stringOut)
{
#ifdef DEBUG
if(NULL==stringInput)
return 0;
#endif
const char *inString1=stringInput;
const char *inString2=stringInput+1;
char *outString=stringOut;
int count=1;
while(*inString1)
{
if(*inString1==*inString2)
count++;
else
{
printf("hello\n");
if(1!=count)
{
*outString=count+'0';
outString++;
*outString=*inString1;
outString++;
}
else
{
*outString=*inString1;
outString++;
}
count=1;
}
inString1++;
inString2++;
}
*outString='\0';
return 0;
}
int main()
{
char input[100]={"abbbbccccddddaaaaa"};
char output[100]={0};
zigString(input,output);
printf("%s\n",input);
printf("%s\n",output);
return 0;
}
字符串压缩函数
最新推荐文章于 2025-06-01 09:00:59 发布