#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; }
字符串压缩函数
最新推荐文章于 2024-05-22 17:32:13 发布