📄 lzw_bianma.cpp
字号:
#include<iostream>
#include<string>
#include<map>
using namespace std;
string c,codestream[4097];
map<string,string> pos;
string bb[4097]={"#0","#1","#2","#3","#4","#5","#6","#7","#8","#9","#10","#11","#12","#13","#14",
"#15","#16","#17","#18","#19","#20","#21","#22","#23","#24","#25","#26","#27","#28","#29","#30","#31"};
string b[4097]={"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t",
"u","v","w","x","y","z","A","B","C","D","E","F"};
void strtab()
{
int i,j;
for(i=0;i<=3;i++)
pos[b[i]]=bb[i];
}
string int2str( int num)
{
if (num == 0 )
return " 0 " ;
string str = "" ;
while (num)
{
str = ( char )(num % 10 + 48 ) + str;
num /= 10 ;
}
return str;
}
int main()
{
strtab();
string data;
string ck,c,temp;
int j=4,i=0;
cin>>data;
// cout<<data;
basic_string<char>::iterator ie;
ie=data.begin();
ck+=*ie;
while(ie!=(data.end()+1))
{
if(pos[ck]!="")
{ c=ck;
// cout<<pos[c]<<"!!"<<endl;
}
else
{
string s=int2str(j);
// cout<<"c="<<s<<endl;
j++;
pos[ck]="#"+s;
cout<<"ck1="<<ck<<endl;
cout<<"ck="<<pos[ck]<<endl;
codestream[i++]=pos[c];
// cout<<"C="<<pos[c]<<endl;
c=ck.erase(0,c.size());
}
ie++;
ck.erase();
ck=c+*ie;
}
//cout<<"afs"<<pos["aba"];
for(j=0;j<i;j++)
cout<<codestream[j];
cout<<endl;
system("pause");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -