PAT basic-level 1078 字符串压缩与解压 笔记
2018-02-28 18:00
267 查看
1078. 字符串压缩与解压 (20)
时间限制400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示。例如 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 <string> #include <iterator> using namespace std; string out; int main(){ string c; getline(cin, c); if (c == "C"){ string s; getline(cin, s); for (int i = 0, j = 0; i < s.size(); ){ if (i == s.size() - 1){ out.push_back(s[i]); break; } j = i + 1; while (s[j] == s[i] && j < s.size()) j++; if (j - i > 1){ int m = j - i; string t; while (m > 0){ t.insert(t.begin(), m % 10 + '0'); m /= 10; } out += t; } out.push_back(s[i]); i = j; } cout << out << endl; } else if (c == "D"){ string s; getline(cin, s); if (s.size() == 1) out = s; else { for (int i = 0; i < s.size();){ if (s[i] >= '0' && s[i] <= '9'){ int sum = s[i] - '0'; int j = i + 1; while (s[j] >= '0' && s[j] <= '9' && j < s.size()){ sum *= 10; sum += s[j] - '0'; j++; } while (sum--) out.push_back(s[j]); i = j + 1; } else out.push_back(s[i++]); } } cout << out << endl; } return 0; }
相关文章推荐
- PAT (Basic Level) Practise (中文) 1078. 字符串压缩与解压 (20)
- PAT 乙级 1078. 字符串压缩与解压 (20)
- PAT1078. 字符串压缩与解压
- 乙级 PAT 1078. 字符串压缩与解压 (20)
- PAT乙级1078. 字符串压缩与解压 (20)
- PAT乙级1078. 字符串压缩与解压 (20)
- 1078. 字符串压缩与解压 (20) PAT乙级真题
- 1078. 字符串压缩与解压 (20)-PAT乙级真题
- PAT basic-level 1079 延迟的回文数 笔记
- PAT basic-level 1050 螺旋矩阵 笔记
- PAT basic-level 1068 万绿丛中一点红 笔记
- PAT basic-level 1074 宇宙无敌加法器 笔记
- 1078. 字符串压缩与解压 (20)
- PAT basic-level 1035 插入与归并 笔记
- 1078. 字符串压缩与解压 (20)
- 1078. 字符串压缩与解压 (20)
- 1078. 字符串压缩与解压 (20)
- 1078. 字符串压缩与解压 (20)(C++)
- PAT basic-level 1069 微博转发抽奖 笔记
- 1078. 字符串压缩与解压 (20)