溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C語言字符串的壓縮編碼與解碼

發(fā)布時(shí)間:2024-08-30 14:03:44 來源:億速云 閱讀:80 作者:小樊 欄目:編程語言

在C語言中,字符串的壓縮編碼和解碼可以通過一些算法實(shí)現(xiàn),例如Huffman編碼、LZ77等。這里我們將介紹一個(gè)簡單的壓縮編碼和解碼方法:使用字符計(jì)數(shù)的方式進(jìn)行壓縮和解壓縮。

  1. 壓縮編碼:
#include<stdio.h>
#include<string.h>

void compress(char *input, char *output) {
    int count = 1;
    int i, j = 0;
    for (i = 0; i < strlen(input); i++) {
        if (input[i] == input[i + 1]) {
            count++;
        } else {
            output[j++] = input[i];
            output[j++] = count + '0';
            count = 1;
        }
    }
    output[j] = '\0';
}

int main() {
    char input[] = "aaabbbcccddd";
    char output[100];
    compress(input, output);
    printf("Compressed string: %s\n", output);
    return 0;
}
  1. 解碼:
#include<stdio.h>
#include<string.h>

void decompress(char *input, char *output) {
    int i, j = 0;
    for (i = 0; i < strlen(input); i += 2) {
        int count = input[i + 1] - '0';
        while (count--) {
            output[j++] = input[i];
        }
    }
    output[j] = '\0';
}

int main() {
    char input[] = "a3b3c3d3";
    char output[100];
    decompress(input, output);
    printf("Decompressed string: %s\n", output);
    return 0;
}

這個(gè)示例中,我們首先定義了一個(gè)壓縮函數(shù)compress,它接受一個(gè)輸入字符串input和一個(gè)輸出字符串output。在壓縮函數(shù)中,我們遍歷輸入字符串,統(tǒng)計(jì)連續(xù)相同字符的個(gè)數(shù),并將字符和個(gè)數(shù)存儲(chǔ)到輸出字符串中。最后,我們定義了一個(gè)解壓縮函數(shù)decompress,它接受一個(gè)輸入字符串input和一個(gè)輸出字符串output。在解壓縮函數(shù)中,我們遍歷輸入字符串,根據(jù)字符和個(gè)數(shù)還原原始字符串,并將其存儲(chǔ)到輸出字符串中。

請(qǐng)注意,這個(gè)示例僅適用于簡單的字符串壓縮和解壓縮。對(duì)于更復(fù)雜的壓縮需求,建議使用成熟的壓縮算法庫,例如zlib等。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI