在C语言中,字符串的压缩编码和解码可以通过一些算法实现,例如Huffman编码、LZ77等。这里我们将介绍一个简单的压缩编码和解码方法:使用字符计数的方式进行压缩和解压缩。
#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;
}
#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;
}
这个示例中,我们首先定义了一个压缩函数compress
,它接受一个输入字符串input
和一个输出字符串output
。在压缩函数中,我们遍历输入字符串,统计连续相同字符的个数,并将字符和个数存储到输出字符串中。最后,我们定义了一个解压缩函数decompress
,它接受一个输入字符串input
和一个输出字符串output
。在解压缩函数中,我们遍历输入字符串,根据字符和个数还原原始字符串,并将其存储到输出字符串中。
请注意,这个示例仅适用于简单的字符串压缩和解压缩。对于更复杂的压缩需求,建议使用成熟的压缩算法库,例如zlib等。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。