时间优先的方式实现数据的压缩、解压缩

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// "aaaaabbbhaihualovefangfangooooooooo";    --> 5a3bhaihualovefangfang9o
char * timefastzip(char *str)
{
    int length = strlen(str);                                // 获取待压缩字符串的长度
    char *newstr = (char *)calloc(length, sizeof(char));    // 给压缩的字符串开辟内存

    char *pstr = str;
    char *pnewstr = newstr;            // 保存分配内存的首地址

    while (*pstr != '\0')
    {
        int charlength = 0;
        char * p = pstr;
        while (*p == *(p + 1))
        {
            charlength++;                        // 统计重复字母次数
            p++;
        }

        if (charlength == 0)
            *pnewstr++ = *pstr++;
        else
        {
            *pnewstr = charlength + 1 + '0';    // 重复字母个数转化为数值型字符
            *(pnewstr + 1) = *pstr;
            pnewstr += 2;
            pstr += charlength + 1;
        }
    }

    _recalloc(newstr, strlen(newstr), sizeof(char));        // 释放压缩的空间

    return newstr;
}

char * timefastunzip(char *str)
{
    char *newstr = (char *)calloc(10000, sizeof(char));

    char *pstr = str;
    char *pnewstr = newstr;

    while (*pstr != '\0')
    {
        char *p = pstr;
        if (*p >= '0'&&*p <= '9')
        {
            int length = *p - '0';
            for (int i = 0; i < length; i++)
            {
                *pnewstr++ = *(p + 1);
            }
            pstr += 2;
        }
        else
        {
            *pnewstr++ = *pstr++;
        }
    }

    _recalloc(newstr, strlen(newstr), sizeof(char));

    return newstr;
}

void main006()    
{
    char str[1024] = "aaaaabbbhaihualovefangfangooooooooo";    // 5a3bhaihualovefangfang9o

    printf("%s \n", str);
    printf("%s \n", timefastzip(str));
    printf("%s \n", timefastunzip(str));

    system("pause");
}
时间优先

相关文章:

  • 2022-12-23
  • 2021-10-16
  • 2022-12-23
  • 2021-07-03
  • 2021-10-08
  • 2022-02-26
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-20
  • 2022-02-13
  • 2022-12-23
  • 2021-12-29
  • 2021-09-29
  • 2022-02-11
  • 2021-07-14
相关资源
相似解决方案