PAT (Basic Level) Practise (中文) 1078. 字符串压缩与解压 (20)
来源:互联网 发布:机械制图网络课程 编辑:程序博客网 时间:2024/05/15 14:40
文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示。例如 ccccc 就用 5c 来表示。如果字符没有重复,就原样输出。例如 aba 压缩后仍然是 aba。
解压方法就是反过来,把形如 5c 这样的表示恢复为 ccccc。
本题需要你根据压缩或解压的要求,对给定字符串进行处理。这里我们简单地假设原始字符串是完全由英文字母和空格组成的非空字符串。
输入格式:
输入第一行给出一个字符,如果是 C 就表示下面的字符串需要被压缩;如果是 D 就表示下面的字符串需要被解压。第二行给出需要被压缩或解压的不超过1000个字符的字符串,以回车结尾。题目保证字符重复个数在整型范围内,且输出文件不超过1MB。
输出格式:
根据要求压缩或解压字符串,并在一行中输出结果。
输入样例 1:CTTTTThhiiiis isssss a tesssst CAaaa as输出样例 1:
5T2h4is i5s a3 te4st CA3a as输入样例 2:
D5T2h4is i5s a3 te4st CA3a as10Z输出样例 2:
TTTTThhiiiis isssss a tesssst CAaaa asZZZZZZZZZZ
Experience: 字符串的压缩与解压,做起来像两道题,但其实把模板颠倒一下就好了,还是有点小难度,昨天考试做了好一会儿。
#include<iostream>using namespace std;int main(){char C;cin>>C;getchar();if(C=='D'){string str;getline(cin,str);int count=0;for(int i=0;i<str.length();i++){if((str[i]>'9'||str[i]<'0')&&count==0){cout<<str[i];continue;}if(str[i]>='0'&&str[i]<='9'){count=count*10+str[i]-'0';continue;}if((str[i]>'9'||str[i]<'0')&&count!=0){for(int j=0;j<count;j++)cout<<str[i];count=0;}}}else{string str;getline(cin,str);int count;for(int i=0;i<str.length();i++){count=1;for(int j=i;j<str.length();j++){if(str[j]==str[j+1]){count++;}else break;}if(count==1)cout<<str[i]; else cout<<count<<str[i]; i+=count-1;}}return 0;}
阅读全文
0 0
- PAT (Basic Level) Practise (中文) 1078. 字符串压缩与解压 (20)
- PAT (Basic Level) Practise (中文)
- PAT (Basic Level) Practise (中文)
- PAT (Basic Level) Practise (中文)--1001
- PAT (Basic Level) Practise (中文)
- PAT (Basic Level) Practise (中文)1001
- PAT (Basic Level) Practise (中文)1002
- PAT (Basic Level) Practise (中文) 1007
- PAT (Basic Level) Practise (中文)1004. 成绩排名 (20)
- PAT (Basic Level) Practise (中文)1009. 说反话 (20)
- PAT (Basic Level) Practise (中文)1012. 数字分类 (20)
- PAT (Basic Level) Practise (中文)1013. 数素数 (20)
- PAT (Basic Level) Practise (中文)1019. 数字黑洞 (20)
- PAT (Basic Level) Practise (中文)1027. 打印沙漏(20)
- PAT (Basic Level) Practise (中文)1028. 人口普查(20)
- PAT (Basic Level) Practise (中文)1029. 旧键盘(20)
- PAT (Basic Level) Practise (中文)1027. 打印沙漏(20)
- PAT (Basic Level) Practise (中文)1028. 人口普查(20)
- js中作用域和上下文等问题分析
- ansible 自动化运维实现角色定制
- TCP原理 粘包分包现象
- AutoCAD .Net 程序自动加载 AutoLoader
- Sophus库练习(李群李代数)---参考SLAM十四讲4.4
- PAT (Basic Level) Practise (中文) 1078. 字符串压缩与解压 (20)
- 小结 | C++ 菱形继承、虚继承
- python_MySQL一揽子基础知识
- 数据库连接池活尿泥模拟及c3p0的使用
- 安全hash算法,sha-1的C++实现
- JPA
- JS 实现父子窗体相互传值的三个方法
- auto与 decltype 的区别
- python学习系列(四)元组