首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【PAT乙级】字符串压缩与解压

【PAT乙级】字符串压缩与解压

作者头像
喜欢ctrl的cxk
发布于 2022-05-07 06:37:40
发布于 2022-05-07 06:37:40
37300
代码可运行
举报
文章被收录于专栏:Don的成长史Don的成长史
运行总次数:0
代码可运行

题目描述:

文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示。例如 ccccc 就用 5c 来表示。如果字符没有重复,就原样输出。例如 aba 压缩后仍然是 aba

解压方法就是反过来,把形如 5c 这样的表示恢复为 ccccc

本题需要你根据压缩或解压的要求,对给定字符串进行处理。这里我们简单地假设原始字符串是完全由英文字母和空格组成的非空字符串。

输入描述:

输入第一行给出一个字符,如果是 C 就表示下面的字符串需要被压缩;如果是 D 就表示下面的字符串需要被解压。第二行给出需要被压缩或解压的不超过 1000 个字符的字符串,以回车结尾。题目保证字符重复个数在整型范围内,且输出文件不超过 1MB。

输出描述:

根据要求压缩或解压字符串,并在一行中输出结果。

输入样例 1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
C
TTTTThhiiiis isssss a   tesssst CAaaa as

输出样例 1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
5T2h4is i5s a3 te4st CA3a as

输入样例 2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
D
5T2h4is i5s a3 te4st CA3a as10Z

输出样例 2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
TTTTThhiiiis isssss a   tesssst CAaaa asZZZZZZZZZZ

 AC代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <bits/stdc++.h>
using namespace std;

void compression(string s);   //压缩字符串
void decompression(string s);   //解压字符串

int main()
{
    char ch;
    cin >> ch;   //输入一个字符
    getchar();   //吃回车
    string s;
    getline(cin,s);    //获取一行字符串
    switch(ch)  //判断是压缩还是解压缩
    {
        case 'C': compression(s); break;   //压缩字符串
        case 'D': decompression(s); break;  //解压字符串
        default: break;
    }
    return 0;
}

void compression(string s)   //压缩字符串
{
    for(int i = 0; i < s.length(); i++)   //遍历字符串
    {
        int cnt = 0;   //用来记录重复字符数量
        while(s[i] == s[i+1])   //判断是不是字符串中的重复字符
        {
            i++;
            cnt++;   
        }
        if(cnt != 0)
        {
            cout << cnt+1;   //压缩后的形式,先输出重复字符的个数
        }
        cout << s[i];   //再输出重复字符
    }
}

void decompression(string s)   //解压字符串
{
    for(int i = 0; i < s.length(); i++)   //遍历字符串
    {
        int cnt = 0;
        while(s[i] >= '0' && s[i] <= '9')
        {
            cnt = cnt*10 + s[i]-'0';  //统计被压缩字符串的个数,可能是俩位数
            i++;
        }
        for(int j = 0; j < cnt; j++)
        {
            cout << s[i];   //输出被压缩的字符
        } 
        if(cnt == 0)   //如果不是被压缩的字符则直接输出
        {
            cout << s[i];
        }
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
这波盗号很迷......不要扫描来路不明的二维码!!!
我记得上个周末的晚上,本来我正在看某说唱节目,刚刚把老舅的《年轻的窦唯》听完,正觉得很上头呢,突然看到群里有人说 QQ 出事了。
why技术
2022/11/01
1K0
这波盗号很迷......不要扫描来路不明的二维码!!!
手把手教大家如何解决QQ被盗的风险。
  这种情况在QQ群里面见的多。通常是发送一些具有诱惑性的链接诱导你去点击。也可能会是一些二维码,如下图。为了做这期,能更好的了解其盗号的手段,我把凡是我看到的盗号链接都点了个遍,那些恶意二维码我也扫了个遍。这是我在了解其原理并做了相应的安全措施前提下做的,小伙伴们千万不要去乱点乱扫。
知识与交流
2024/06/03
1.2K0
手把手教大家如何解决QQ被盗的风险。
QQ总是异地登录到底是怎么回事,被盗的原因通常是以下
经常有朋友反映QQ被盗的现象,今天小编就来告诉大家QQ容易被盗的原因是什么,以及如何防止QQ号被盗,有兴趣的朋友一起来看看吧
知识与交流
2021/04/02
14.2K0
QQ总是异地登录到底是怎么回事,被盗的原因通常是以下
QQ 被盗号引发大型“社死”现场!腾讯回应:系用户扫描过伪造的游戏二维码
整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 今日凌晨,“QQ 盗号”这一词条登上微博热搜,直至中午都还在热搜榜上待着。 看到这条热搜后,小编火速登录 QQ 查看自己是否也被盗号,所幸没有遭殃,但同时也发现了列表里的许多群组突然“活跃”起来。 点进去一看,有些动作快的群主已撤回成员消息,但也有些群还未及时处理:好几个群成员在凌晨时候突然发黄图,甚至还发在了群成员 599 人、其中还有十几位老师的大学学院群里……借用网友的一句话:我这替人尴尬的老毛病又犯了。 大型社死现场,网友:
用户1737318
2022/06/29
7990
QQ 被盗号引发大型“社死”现场!腾讯回应:系用户扫描过伪造的游戏二维码
开启QQ登录保护仍被盗号——QQ安全机制全面分析[通俗易懂]
周围总是有些同学QQ被盗号,攻击者盗取账号后会继续去欺骗列表里的好友,形成链式反应。危害比较大。
全栈程序员站长
2022/06/28
4.4K0
开启QQ登录保护仍被盗号——QQ安全机制全面分析[通俗易懂]
什么是撞库及撞库攻击的基本原理
6月26日晚,我国大型聊天软件QQ出现了大规模盗号情况,而且是在QQ号本人在线时出现了被盗情况。
埃文科技
2022/07/08
2.8K0
什么是撞库及撞库攻击的基本原理
微信扫码登录是如何实现的?
大家好,我是小义。在数字化时代,微信扫码登录作为一种便捷、安全的登录方式,越来越多的出现在人们的日常生活中。
程序员小义
2024/05/20
1.1K0
微信扫码登录是如何实现的?
一次学校集体被钓鱼事件分析
我们学校被钓鱼了,泄露了不少同学的邮箱信息。正好先来无事,实验室的师哥们就带我们这帮菜鸡们玩了玩(呜呜呜~~基本都是师哥拿下来的,弟弟太菜了),毕竟在我们这种特殊院校出现这种事件说明犯罪分子十分嚣张了。
FB客服
2020/09/04
5700
一次学校集体被钓鱼事件分析
扫码登录技术原理
首先用户打开网站的登录页面的时候,向浏览器的服务器发送获取登录二维码的请求。服务器收到请求后,随机生成一个uuid,将这个id作为key值存入redis服务器,同时设置一个过期时间,再过期后,用户登录二维码需要进行刷新重新获取。
2020/02/12
5K0
微信扫码登录是如何实现的?
网页版微信刚推出时,无数人被它的登录方式惊艳了一下,不需要输入用户名密码,打开手机微信扫一扫,便自动登录。从原理上讲,二维码只能是一段文本的编码,如何用它实现快捷登录的呢?
Java技术栈
2018/12/17
3.5K0
扫码登录实现原理
首先,介绍下什么是扫码登录。现在,大部分同学手机上都装有qq和淘宝,天猫等这一类的软件。而开发这些app的企业,都有他们相对应的网站。为了让用户在使用他们的网站时,登录更加方便和安全。这些企业提供了, 使用手机,扫一扫,就可以登录的服务。网页登录时的效果如下:
用户1093975
2018/09/21
1.9K0
扫码登录实现原理
扫码登录的背后原理是什么
我们在日常登录网站时,经常会使用到扫码登录这个选项,如果要理解背后原理,我们可以从最简单的用户登录场景切入:
潋湄
2025/01/17
3100
扫码登录的背后原理是什么
阿里面试官:分别说说微信和淘宝扫码登录背后的实现原理?
扫码登录这个功能,最早应该是微信的PC端开始搞,虽然有点反人类的功能(不扫码也没别的方式登录),但不得不说还是很酷的。
乔戈里
2020/02/25
2.6K0
扫码登录的原理和实现方法_扫码支付的原理
在日常 Web 端产品的使用中,一般都会支持扫码登录,这种方式操作简单,相对传统的手机号登录等方式速度更快、安全性更高,还可以增加自家产品的粘合度。
全栈程序员站长
2022/11/01
3.4K0
扫码登录的原理和实现方法_扫码支付的原理
Web应用多账号系统设计及微信扫码登录实现
用户1170933
2018/01/05
3.2K0
Web应用多账号系统设计及微信扫码登录实现
IM扫码登录技术专题(三):通俗易懂,IM扫码登录功能详细原理一篇就够
本文引用了作者“大古同学”的“二维码扫码登录是什么原理”一文的主要内容,为了更好的理解和阅读,收录时有修订和改动,感谢原作者的分享。
JackJiang
2021/05/10
8950
扫码登录是如何实现的?
网页版微信刚推出时,无数人被它的登录方式惊艳了一下,不需要输入用户名密码,打开手机微信扫一扫,便自动登录。从原理上讲,二维码只能是一段文本的编码,如何用它实现快捷登录的呢?
java思维导图
2018/07/26
2.5K0
扫码登录是如何实现的?
手机扫码登录实现原理「建议收藏」
最近接到一个需求,要求用手机扫码实现用户登录,这是近几年比较流行的登录方式。这样确实是实现用户体验至上,操作简单,方便实用。拿到需求之后,我与后端大哥商量后,敲定了具体的实施方案。其实重要的还是要弄懂他实现的原理。
全栈程序员站长
2022/08/02
2.1K0
手机扫码登录实现原理「建议收藏」
带你入门了解二维码扫码登录是什么原理
在日常生活中,二维码出现在很多场景,比如超市支付、系统登录、应用下载等等。了解二维码的原理,可以为技术人员在技术选型时提供新的思路。对于非技术人员呢,除了解惑,还可以引导他更好地辨别生活中遇到的各种二维码,防止上当受骗。
Nealyang
2021/03/26
2K0
带你入门了解二维码扫码登录是什么原理
面试官:如何实现扫码登录功能?
经过八股和算法的交锋,老三松了口气,都hold住了。只见面试官微微一笑,“其实,我真正想问的是……你觉得扫码登录应该怎么实现。”
三分恶
2021/10/26
3.2K0
推荐阅读
相关推荐
这波盗号很迷......不要扫描来路不明的二维码!!!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验