基因数据压缩算法是一个初级的数据压缩算法,基因数据如下所示"ATAGATGCAT",如果使用标准的ASCII编码(每个字符1个字节),这个基因字符串的流长度是10*8=80位。
这些字符是由4种不同的字符组成,所有我们可以使用双位编码压缩,比如 A:00, C:01, T:10, G11,压缩之后我们就可以在一个字节存放4个基因字符了,当数据比较大时,压缩效率为25%。
完整代码
#include <iostream>
#include <string>
using namespace std;
void PrintBits(const char *pstr, int width = 1);
// ACTG A:00, C:01, T:10, G11
class Dna
{
public:
Dna() : sizes(0) {}
Dna(const char *str);
void AddCompress(const char c) { Compress(c); }
void AddCompress(const char *pstr);
string Expand();
int Size() const { return sizes; }
string Data() const { return data; }
string Compress() const { return compressData; }
void PrintCompressData() { PrintBits(compressData.c_str()); }
void PrintCompressData(int