前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1078 字符串压缩与解压 (20 分)

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

作者头像
可爱见见
发布2019-11-08 12:02:04
4360
发布2019-11-08 12:02:04
举报
文章被收录于专栏:卡尼慕卡尼慕

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循环即可完成。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 卡尼慕 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档