文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示。例如 解压方法就是反过来,把形如 本题需要你根据压缩或解压的要求,对给定字符串进行处理。这里我们简单地假设原始字符串是完全由英文字母和空格组成的非空字符串。 输入格式:输入第一行给出一个字符,如果是 |
输出格式:
根据要求压缩或解压字符串,并在一行中输出结果。
输入样例 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
考察 : 字符串处理 |
注意 : 解压10a 输出aaaaaaaaaa |
思路 : 循环 |
C/C++
#include<bits/stdc++.h>
using namespace std;
int main()
{
char ch,s[1001];
int len = 0;
cin >> ch;
getchar();
cin.getline(s,1001);
if(ch=='C')
{
for(int z=0;z<strlen(s);z+=len){
len = 1;
while (len<strlen(s) && s[z]==s[z+len]) len++;
if(len!=1) cout << len;
cout << s[z];
}
}
else
{
long num = 0;
for(int z=0;z<strlen(s);z++) {
if(s[z]>='0' && s[z]<='9')
{
num = num*10 + s[z] - 48;
continue;
}
if(num==0) cout << s[z];
else for(;num>0;num--) cout << s[z];
}
}
return 0;
}