C++ 实现编码算法解码 - 压缩存储空间
C++ 实现编码算法解码 - 压缩存储空间
本文介绍了一种编码算法,该算法通过使用变长的字符表示来有效地减少存储空间。例如,字符串 'AAAABBBCCDEEEE' 可以编码为 '4A3B2C1D4E',从而将存储空间从 14 个字符减少到 10 个字符。
本文将使用 C++ 代码实现该算法的解码过程,并提供示例代码及解析。
代码实现
#include <iostream>
#include <string>
using namespace std;
string decode(string s) {
string res = "";
int i = 0;
while (i < s.size()) {
int j = i + 1;
while (j < s.size() && isdigit(s[j])) j++;
int len = stoi(s.substr(i, j-i));
char c = s[j];
res += string(len, c);
i = j + 1;
}
return res;
}
int main() {
string s = "4A3B2C1D4E";
cout << decode(s) << endl; // output: AAAABBBCCDEEEE
return 0;
}
代码解析
decode(string s)函数接收编码后的字符串s作为参数,并返回解码后的字符串。- 使用
while循环遍历编码后的字符串,每次循环处理一个字符及其对应的重复次数。 isdigit(s[j])判断当前字符是否为数字,如果是数字则继续向后遍历,找到数字串的结束位置。stoi(s.substr(i, j-i))将数字串转换为整数,表示字符重复的次数。s[j]获取字符本身。string(len, c)创建一个长度为len的字符串,所有字符都为c,并将其追加到结果字符串res中。i = j + 1将循环索引移到下一个字符的位置。main函数中调用decode函数进行解码,并将结果输出。
总结
本文介绍了一种简单的编码算法,通过变长的字符表示来减少存储空间。C++ 代码实现了该算法的解码过程,并提供了详细的代码解析。该算法可以用于压缩存储空间,提高数据传输效率。
原文地址: https://www.cveoy.top/t/topic/lBW6 著作权归作者所有。请勿转载和采集!