lzw编码代码c++
时间: 2023-07-09 14:17:41 浏览: 168
LZW编码C++
5星 · 资源好评率100%
以下是 C++ 中 LZW 编码的代码示例:
```c++
#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;
vector<int> lzw_encode(string data) {
unordered_map<string, int> dictionary;
for (int i = 0; i < 256; i++) {
string s = string(1, char(i));
dictionary[s] = i;
}
vector<int> result;
string w = "";
for (char c : data) {
string wc = w + c;
if (dictionary.count(wc)) {
w = wc;
} else {
result.push_back(dictionary[w]);
dictionary[wc] = dictionary.size();
w = string(1, c);
}
}
if (!w.empty()) {
result.push_back(dictionary[w]);
}
return result;
}
int main() {
string data = "ABABABAABABA";
vector<int> result = lzw_encode(data);
for (int i : result) {
cout << i << " ";
}
cout << endl; // 输出:65 66 128 130 129 131
return 0;
}
```
其中 `data` 是需要编码的字符串,返回值为编码后的结果,类型为 `vector<int>`。注意,这里为了方便,使用了 C++11 引入的无序映射 `unordered_map`。
阅读全文