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
#include<iostream>
using namespace std;
string s;void compress(){getline(cin,s);for(int i = 0; i < s.length(); i++){int cnt = 0;while(s[i] == s[i+1]){cnt++;i++;}if(cnt != 0) cout << cnt+1;cout << s[i];}
}void depress(){getline(cin,s);for(int i = 0; i < s.length(); i++){int sum = 0; while(s[i] <= '9' && s[i] >= '0')sum = sum * 10 + s[i++] - '0';for(int j = 0; j < sum; j++)cout <<s[i];if(sum == 0) cout << s[i];}
}int main(){char c;cin >> c;getchar();if(c == 'C') compress();else depress();return 0;
}

 

转载于:https://www.cnblogs.com/wanghao-boke/p/10424593.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/385155.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

120. 三角形最小路径和

给定一个三角形&#xff0c;找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 例如&#xff0c;给定三角形&#xff1a; [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11&#xff08;即&#xff0c;2 3 5 1 11&#xff09;…

1079 延迟的回文数 (20 分)

给定一个 k1 位的正整数 N&#xff0c;写成 a​k​​⋯a​1​​a​0​​ 的形式&#xff0c;其中对所有 i 有 0≤a​i​​<10 且 a​k​​>0。N 被称为一个回文数&#xff0c;当且仅当对所有 i 有 a​i​​a​k−i​​。零也被定义为一个回文数。 非回文数也可以通过一系…

1081 检查密码 (15 分)

本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能。该网站要求用户设置的密码必须由不少于6个字符组成&#xff0c;并且只能有英文字母、数字和小数点 .&#xff0c;还必须既有字母也有数字。 输入格式&#xff1a; 输入第一行给出一个正整数 N&#xff08;≤ …

1082 射击比赛 (20 分)

本题目给出的射击比赛的规则非常简单&#xff0c;谁打的弹洞距离靶心最近&#xff0c;谁就是冠军&#xff1b;谁差得最远&#xff0c;谁就是菜鸟。本题给出一系列弹洞的平面坐标(x,y)&#xff0c;请你编写程序找出冠军和菜鸟。我们假设靶心在原点(0,0)。 输入格式&#xff1a; …

LRU缓存机制

运用你所掌握的数据结构&#xff0c;设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作&#xff1a; 获取数据 get 和 写入数据 put 。 获取数据 get(key) - 如果密钥 (key) 存在于缓存中&#xff0c;则获取密钥的值&#xff08;总是正数&#xff09;&#xff…

1083 是否存在相等的差 (20 分)

给定 N 张卡片&#xff0c;正面分别写上 1、2、……、N&#xff0c;然后全部翻面&#xff0c;洗牌&#xff0c;在背面分别写上 1、2、……、N。将每张牌的正反两面数字相减&#xff08;大减小&#xff09;&#xff0c;得到 N 个非负差值&#xff0c;其中是否存在相等的差&#…

c++如何防止一个类被其他类继承?

如何在防止一个类被其他的类继承呢&#xff1f; 如果是仅仅为了达到这个目的可以直接把这个类的构造函数设置成私有的&#xff0c;这样就杜绝了其他类的继承。也相当于毁掉了这个类&#xff08;无法再创造出自己的对象&#xff09;。 那么怎么样既要保证这个类的完整性&#…

1084 外观数列 (20 分)

外观数列是指具有以下特点的整数序列&#xff1a; d, d1, d111, d113, d11231, d112213111, ...它从不等于 1 的数字 d 开始&#xff0c;序列的第 n1 项是对第 n 项的描述。比如第 2 项表示第 1 项有 1 个 d&#xff0c;所以就是 d1&#xff1b;第 2 项是 1 个 d&#xff08;对…

C++中构造函数和析构函数可以抛出异常吗?

不建议在构造函数中抛出异常。当构造函数中抛出异常时&#xff0c;析构函数将不会被执行&#xff0c;需要手动释放内存。析构函数不应该抛出异常。当析构函数中有一些可能发生的异常时&#xff0c;这时候要把可能发生的异常完全封装在析构函数内部&#xff0c;决不能让它抛出到…

1085 PAT单位排行 (25 分

每次 PAT 考试结束后&#xff0c;考试中心都会发布一个考生单位排行榜。本题就请你实现这个功能。 输入格式&#xff1a; 输入第一行给出一个正整数 N&#xff08;≤&#xff09;&#xff0c;即考生人数。随后 N 行&#xff0c;每行按下列格式给出一个考生的信息&#xff1a; 准…

23. 合并K个排序链表

合并 k 个排序链表&#xff0c;返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1->2->3->4->4->5->6 解法&#xff1a; class Solution { public:ListNode* mergeKLists(vect…

1086 就不告诉你 (15 分)

做作业的时候&#xff0c;邻座的小盆友问你&#xff1a;“五乘以七等于多少&#xff1f;”你应该不失礼貌地围笑着告诉他&#xff1a;“五十三。”本题就要求你&#xff0c;对任何一对给定的正整数&#xff0c;倒着输出它们的乘积。 输入格式&#xff1a; 输入在第一行给出两个…

学习链接

序号链接1Forz Blog [点击链接]2arkingc/note [点击链接] linw7/Skill-Tree [点击链接] chenshuaihao/NetServer [点击链接]

1087 有多少不同的值 (20 分)

当自然数 n 依次取 1、2、3、……、N 时&#xff0c;算式 ⌊ 有多少个不同的值&#xff1f;&#xff08;注&#xff1a;⌊ 为取整函数&#xff0c;表示不超过 x 的最大自然数&#xff0c;即 x 的整数部分。&#xff09; 输入格式&#xff1a; 输入给出一个正整数 N&#xff08;…

1088 三人行 (20 分)

子曰&#xff1a;“三人行&#xff0c;必有我师焉。择其善者而从之&#xff0c;其不善者而改之。” 本题给定甲、乙、丙三个人的能力值关系为&#xff1a;甲的能力值确定是 2 位正整数&#xff1b;把甲的能力值的 2 个数字调换位置就是乙的能力值&#xff1b;甲乙两人能力差是丙…

1089 狼人杀-简单版 (20 分)

以下文字摘自《灵机一动好玩的数学》&#xff1a;“狼人杀”游戏分为狼人、好人两大阵营。在一局“狼人杀”游戏中&#xff0c;1 号玩家说&#xff1a;“2 号是狼人”&#xff0c;2 号玩家说&#xff1a;“3 号是好人”&#xff0c;3 号玩家说&#xff1a;“4 号是狼人”&#…

1090 危险品装箱 (25 分)

集装箱运输货物时&#xff0c;我们必须特别小心&#xff0c;不能把不相容的货物装在一只箱子里。比如氧化剂绝对不能跟易燃液体同箱&#xff0c;否则很容易造成爆炸。 本题给定一张不相容物品的清单&#xff0c;需要你检查每一张集装箱货品清单&#xff0c;判断它们是否能装在同…

C++标准库之String

C中支持的字符串处理的函数库叫String&#xff0c;但它不是STL&#xff0c;却与STL操作十分相似。 1.声明&#xff1a; 使用String之前要有以下头文件 #include<string> using namespace std; 声明方法 string s; //声明一个string对象 s string s[10]; //声明一个stri…

652. 寻找重复的子树

给定一棵二叉树&#xff0c;返回所有重复的子树。对于同一类的重复子树&#xff0c;你只需要返回其中任意一棵的根结点即可。 两棵树重复是指它们具有相同的结构以及相同的结点值。 示例 1&#xff1a; 1 / \ 2 3 / / \ 4 2 4 / 4 …