题目地址:1078. 字符串压缩与解压 (20)
#include <bits/stdc++.h>
using namespace std;
string decompressed(string line)
{
string ans;
for(size_t i=0;i<line.size();++i)
{
if(line[i]>='0'&&line[i]<='9')
{
string w;
while(line[i]>='0'&&line[i]<='9'&&i<line.size())
w+=line[i++];
ans+=string(stoi(w),line[i]);
}
else ans+=line[i];
}
return ans;
}
string compressed(string line)
{
string ans;
for(size_t i=0;i<line.size();++i)
{
char w=line[i];
auto next=i+1;
while(next<line.size()&&line[next]==w)++next;
if(next-i>1)
ans+=to_string(next-i);
ans+=w;
i=next-1;
}
return ans;
}
int main()
{
char opt;
string line,ans;
cin>>opt;
cin.get();
getline(cin,line);
if(opt=='C')
ans=compressed(line);
else
ans=decompressed(line);
cout<<ans;
return 0;
}
本文介绍了一种字符串压缩和解压的实现方法,通过遍历输入字符串来判断字符重复次数,并采用数值和字符组合的方式进行压缩。对于解压,则通过解析带有重复次数的字符串来还原原始数据。
1078

被折叠的 条评论
为什么被折叠?



