字符串压缩算法

来源:互联网 发布:宝冢96期事件 知乎 编辑:程序博客网 时间:2024/05/22 07:42

如aaabsssc8999kkk,压缩后为3ab3sc8393k

string CompressString(string& source){    const char*cur = source.c_str();    int ilength = strlen(cur) + 1;  //这里一定要加1,利用source里的结束符'\0'来保证字节串的结尾是没有重复的字符    if(0 >= ilength) return "";    int number = 1;    int pos = 0;    char prechar = cur[0];    for(int i=1;i<ilength;i++)    {        if(prechar == cur[i])        {            number++;        }        else        {            if(number > 1)            {                char buffer[20];                sprintf(buffer,"%d%c",number,cur[i-1]);                source = source.replace(pos,number,buffer,2);                return CompressString(source); //通过递归去压缩剩下的字符串            }else            {                pos = i;                prechar = cur[i];                number = 1;            }        }    }    if(1 == number) return source;//没有重复的了,压缩完毕,结束递归};


原创粉丝点击