P1078 字符串压缩与解压

转跳点:

1078 字符串压缩与解压 (20分)

文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示。例如 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

这道题只需要写好解压和压缩函数就可以了,主函数直接放个switch即可

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h> void compress(void);
void decompress(void); int main(void)
{
switch (getchar())
{
case 'C':
while ('\n' != getchar())
;
compress();
break;
case 'D':
while ('\n' != getchar())
;
decompress();
break;
}
return 0;
} void compress(void)
{
int count = 1;
char pre = getchar(), now; while (now = getchar())
{
if (now == pre)
{
count++;
}
else
{
if (count > 1)
{
printf("%d", count);
}
putchar(pre);
pre = now;
count = 1;
}
if (now == '\n')
{
break;
}
}
} void decompress(void)
{
int count = 0;
char ch; while ((ch = getchar()) != '\n')
{
if (isdigit(ch))
{ //Caculate the criculate times
count = count * 10 + ch - '0';
}
else
{
if (0 == count)
{
count = 1;
}
for (int i = 0; i < count; i++)
{
putchar(ch);
}
count = 0;
}
}
}

PTA不易,诸君共勉!

最新文章

  1. 教你一招:解决安装或卸载office时 提示错误2503 2502 发生了内部错误
  2. 解决IE9下JQuery的ajax失效的问题
  3. Centos6.7下安装配置VPN
  4. JavaScript第一部分
  5. 20141104--SQL,查询习题,约束
  6. iOS-本地推送(本地通知)
  7. J2EE开源项目
  8. Apache安装完服务没有安装的情况
  9. Andoird实现类似iphone AssistiveTouch的控件的demo
  10. 从项目经理的角度看.net的MVC中Razor语法真的很垃圾.
  11. Python爬虫一:爬取上交所上市公司信息
  12. cache buffer
  13. Ajax中与服务器的通信【发送请求与处理响应】
  14. Python-字符串及列表操作-Day2
  15. vue-组件注册
  16. 银行卡卡bin
  17. linux缺失gcc的安装方法
  18. Maya API Test
  19. k-近邻算法-优化约会网站的配对效果
  20. angularjs1.x的directive中的link参数element见解

热门文章

  1. 高级T-SQL进阶系列 (一)【下篇】:使用 CROSS JOIN 介绍高级T-SQL
  2. 「CF383C Propagating tree」
  3. CURL_模拟登录
  4. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设定文本右对齐
  5. eclipse 快速隐藏所有方法的代码块
  6. python爬虫(二) urlparse和urlsplit函数
  7. kafka 日志策略
  8. 【PAT甲级】1037 Magic Coupon (25 分)
  9. R语言 一个向量的值分派给另一个向量
  10. 腾讯云服务器安装python3