文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示。例如 ccccc 就用 5c 来表示。如果字符没有重复,就原样输出。例如 aba 压缩后仍然是 aba

解压方法就是反过来,把形如 5c 这样的表示恢复为 ccccc

本题需要你根据压缩或解压的要求,对给定字符串进行处理。这里我们简单地假设原始字符串是完全由英文字母和空格组成的非空字符串。

输入格式:

输入第一行给出一个字符,如果是 C 就表示下面的字符串需要被压缩;如果是 D 就表示下面的字符串需要被解压。第二行给出需要被压缩或解压的不超过 1000 个字符的字符串,以回车结尾。题目保证字符重复个数在整型范围内,且输出文件不超过 1MB。

输出格式:

根据要求压缩或解压字符串,并在一行中输出结果。

输入样例 1:

C
TTTTThhiiiis isssss a tesssst CAaaa as

输出样例 1:

5T2h4is i5s a3 te4st CA3a as

输入样例 2:

D
5T2h4is i5s a3 te4st CA3a as10Z

输出样例 2:

TTTTThhiiiis isssss a   tesssst CAaaa asZZZZZZZZZZ
#include <iostream>
#include <vector>
using namespace std;
struct node{
char ch;int val;
};
vector<node> v;
int main()
{
char ch;string str;
cin>>ch;getline(cin,str);
getline(cin,str);
if(ch=='C'){//压缩
v.push_back({str[],});
for(int i=;i<str.length();i++)
if(str[i]==str[i-]) v[v.size()-].val++;
else v.push_back({str[i],});
for(int i=;i<v.size();i++)
if(v[i].val==) printf("%c",v[i].ch);
else printf("%d%c",v[i].val,v[i].ch);
}else{//解压
int coun=;
for(int i=;i<str.length();i++){
if(coun==&&!isdigit(str[i])) v.push_back({str[i],});
else if(isdigit(str[i])) coun=coun*+(str[i]-'');
else {
v.push_back({str[i],coun});
coun=;
}
}
for(int i=;i<v.size();i++)
while(v[i].val--) printf("%c",v[i].ch);
}
system("pause");
return ;
}

最新文章

  1. 【leetcode❤python】 303. Range Sum Query - Immutable
  2. jquery事件委托遇到的小坑记录
  3. SpringMVC @RequestBody问题:Unrecognized field , not marked as ignorable
  4. javacc学习
  5. OpenCV 2.4.11 VS2010 Configuration
  6. ASP.NET MVC 学习第二天
  7. alsa utils工具使用
  8. express学习点滴- session()和cookieSession()的区别
  9. Jest 单元测试入门
  10. Swift 4 经典数据结构 Data Struct大全
  11. 手推C3算法
  12. 【等价转换】—— min/max 的转换与互相转换
  13. $set()的正确使用方式
  14. [转]马上2018年了,该不该下定决心转型AI呢
  15. android 图片处理经验分享
  16. LogisticRegression in MLLib
  17. 在Mac上用bootcamp安装windows,使用Android studio启动模拟器时蓝屏问题的解决方法
  18. angular中定义全局变量及全局变量的使用
  19. idea和maven使用的点点滴滴
  20. Oracle实例,具体运用

热门文章

  1. 月光大盗(moon thief)
  2. 已经安装了VRay但3dmax的材质编辑器里没有VRay材质的解决过程
  3. golang web框架 beego 学习 (五) 配置文件
  4. 【计算机视觉】纹理特征之LBP局部二值化模式
  5. Codis-FE配置启动
  6. 用ExtentReports美化你的测试报告
  7. Apache Commons Lang 学习栏目
  8. 【转载】熟练利用google hacking来辅助我们快速渗透
  9. [转帖]AIDA64 6.10版发布:全面支持中国兆芯、海光x86 CPU
  10. TIM—基本定时器代码