专栏首页卡尼慕1078 字符串压缩与解压 (20 分)

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

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

【我的代码】

 1// 1078 字符串压缩与解压 (20 分)
 2#include <iostream>
 3#include <string>
 4using namespace std;
 5int main(){
 6    char C;
 7    cin>>C;
 8    string tmp;
 9    int len;
10    char index;
11    int count = 1;
12    getchar();//读取换行符 
13    getline(cin, tmp);
14    len = tmp.length();
15    if(C == 'C'){
16        //压缩
17        index = tmp[0];
18        for(int i = 1; i <= len; i++){
19            if(tmp[i] == index)
20                count++;
21             else{
22                if(count > 1){
23                    cout<<count<<tmp[i-1];
24                 }
25                 else{
26                    cout<<tmp[i-1];
27                 }
28                 count = 1;
29             }
30             index = tmp[i];
31         }
32    }
33    else if(C == 'D'){
34        //解压 
35        for(int i = 0; i < len; i++){
36            int sum = 0;
37            while(tmp[i] >= '0' && tmp[i] <= '9'){
38                sum = sum *10 + (tmp[i++] - '0');
39            }
40            for(int j = 0; j < sum; j++)
41                cout << tmp[i];
42            if(sum == 0)
43                cout << tmp[i];
44        } 
45    } 
46    return 0;
47}

【总结】

本题实际上可以拆分成两个小问题,分别来实现即可。

压缩的情况,我们根据前一个字符与当前字符进行对比,将相同且连续的字符进行计数,当出现第一个不相同的时候结束,并且同时对前一个字符进行输出。

解压的情况就简单很多,有数字的且不是最末尾的话,说明是下一个字符压缩而成的,因此使用一个for循环即可完成。

本文分享自微信公众号 - 卡尼慕(gh_40138f7dc7d3),作者:卡尼幕

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 1075 链表元素分类 (25 分)

    给定一个单链表,请编写程序将链表元素进行分类排列,使得所有负值元素都排在非负值元素的前面,而 [0, K] 区间内的元素都排在大于 K 的元素前面。但每一类内部...

    可爱见见
  • 1063 计算谱半径 (20 分)

    可爱见见
  • 1052 卖个萌 (20 分)

    萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见,我们假设一个表情符号是按下列格式输出的:

    可爱见见
  • 麻将算法

    麻将胡牌算法(不带赖子)(2天) 编码:(假设一副牌只有筒子 1表示1筒   2表示2筒。。。。 9表示9筒) 要求: 1)七对算法(判断14张牌是否是7对) ...

    Gxjun
  • Oracle函数和存储过程

    提莫队长
  • tmp临时文件目录自动清理

    Linux操作系统的/tmp目录保存临时文件,那么这个目录下的临时文件究竟会保存多久,何时被清理,通过什么方式(哪个服务)来维护清理工作呢?

    Erwin
  • /tmp目录清理问题

    2019年7月10日 ⋅ 浏览量: 4    ...

    以谁为师
  • 【一天一大 lee】N皇后 II (难度:困难) - Day20201017

    n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。

    前端小书童
  • Leetcode Golang 70. Climbing Stairs.go

    版权声明:原创勿转 https://blog.csdn.net/anakinsun/arti...

    anakinsun
  • 如何用FPGA解一道初中数学题

    前几天和同事聊天,他说他上初中的儿子做出了一道很难的数学题,想考考我们这些大学生看能不能做得出来?

    单片机点灯小能手

扫码关注云+社区

领取腾讯云代金券