蓝桥杯 ALGO-110 算法训练 字符串的展开
在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输出时,用连续递增的字母获数字串替代其中的减号,即,将上面两个子串分别输出为“defgh”和“45678”。在本题中,我们通过增加一些参数的设置,使字符串的展开更为灵活。具体约定如下:
(1) 遇到下面的情况需要做字符串的展开:在输入的字符串中,出现了减号“-”,减号两侧同为小写字母或同为数字,且按照ASCII码的顺序,减号右边的字符严格大于左边的字符。
(2) 参数p1:展开方式。p1=1时,对于字母子串,填充小写字母;p1=2时,对于字母子串,填充大写字母。这两种情况下数字子串的填充方式相同。p1=3时,不论是字母子串还是数字字串,都用与要填充的字母个数相同的星号“*”来填充。
(3) 参数p2:填充字符的重复个数。p2=k表示同一个字符要连续填充k个。例如,当p2=3时,子串“d-h”应扩展为“deeefffgggh”。减号两边的字符不变。
(4) 参数p3:是否改为逆序:p3=1表示维持原来顺序,p3=2表示采用逆序输出,注意这时候仍然不包括减号两端的字符。例如当p1=1、p2=2、p3=2时,子串“d-h”应扩展为“dggffeeh”。
(5) 如果减号右边的字符恰好是左边字符的后继,只删除中间的减号,例如:“d-e”应输出为“de”,“3-4”应输出为“34”。如果减号右边的字符按照ASCII码的顺序小于或等于左边字符,输出时,要保留中间的减号,例如:“d-d”应输出为“d-d”,“3-1”应输出为“3-1”。
输入格式
输入包括两行:
第1行为用空格隔开的3个正整数,一次表示参数p1,p2,p3。
第2行为一行字符串,仅由数字、小写字母和减号“-”组成。行首和行末均无空格。
输出格式
输出只有一行,为展开后的字符串。
输入输出样例1
输入
1 2 1
abcs-w1234-9s-4zz
输出
abcsttuuvvw1234556677889s-4zz
输入输出样例2
输入
2 3 2
a-d-d
输出
aCCCBBBd-d
输入输出样例3
输入
3 4 2
di-jkstra2-6
输出
dijkstra2************6
数据规模和约定
40%的数据满足:字符串长度不超过5
100%的数据满足:1<=p1<=3,1<=p2<=8,1<=p3<=2。字符串长度不超过100
#include <iostream>
#include <algorithm>
#include <string>
#include <cctype>
using namespace std;
int main() {int p1, p2, p3;string s;cin >> p1 >> p2 >> p3 >> s;for (int i = 0; i < s.size(); i++) {cout << s[i];if (i < s.size() - 2 && s[i + 1] == '-' &&(isdigit(s[i]) && isdigit(s[i + 2]) || islower(s[i]) && islower(s[i + 2]))) {char c1 = s[i], c2 = s[i + 2];string ans;if (c1 >= c2) ans = "-";else if (c1 + 1 == c2) ans = "";else {if (p3 == 1) {for (int i = c1 + 1; i < c2; i++) {if (p1 == 1) ans.append(p2, tolower((char) i));if (p1 == 2) ans.append(p2, toupper((char) i));if (p1 == 3) ans.append(p2, '*');}}if (p3 == 2) {for (int i = c2 - 1; i > c1; i--) {if (p1 == 1) ans.append(p2, tolower((char) i));if (p1 == 2) ans.append(p2, toupper((char) i));if (p1 == 3) ans.append(p2, '*');}}}cout << ans;i++;}}return 0;
}
蓝桥杯 ALGO-110 算法训练 字符串的展开相关推荐
- 蓝桥杯:试题 算法训练 Remember the A La Mode
蓝桥杯:试题 算法训练 Remember the A La Mode 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 Hugh Samston经营着一个为今年的ICPC世界总决赛的参 ...
- 算法训练 字符串的展开
** 算法训练 字符串的展开 ** 在初赛普及组的"阅读程序写结果"的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有 类似于"d-h"或者& ...
- 矩阵乘法 算法训练 试题_蓝桥杯习题集_ 算法训练 矩阵乘法
原文: 算法训练 矩阵乘法 时间限制:1.0s 内存限制:512.0MB 问题描述 输入两个矩阵,分别是m*s,s*n大小.输出两个矩阵相乘的结果. 输入格式 第一行,空格隔开的三个正整数m,s, ...
- 算法训练 字符串的展开c语言
在初赛普及组的"阅读程序写结果"的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有 类似于"d-h"或者"4-8"的字串, ...
- 蓝桥杯练习系统算法训练习题加答案java版本
附上百度文库的链接:http://wenku.baidu.com/view/afb78d36b42acfc789eb172ded630b1c59ee9bf7 转载于:https://www.cnblo ...
- java蓝桥杯的题_Java蓝桥杯试题集——算法训练ALGO-116——最大的算式
题目要求 解题思路 动态规划,今天才弄明白QAQ,借鉴了这位大佬的博客,曹磊的博客 写的很好!但是我觉得我的循环方式更容易理解嘿嘿嘿~ 首先建立如下图的数组,行数代表前几位数,列数代表有几个乘号.将第 ...
- 蓝桥杯练习系统—算法训练 s01串
第一部分:题目 问题描述 s01串初始为"0" 按以下方式变换 0变1,1变01 输入格式 1个整数(0~19) 输出格式 n次变换后s01串 样例输入 3 样例输出 101 数据 ...
- 蓝桥杯:试题 算法训练 采油区域 矩阵前缀和+动态规划+分治+枚举
资源限制 时间限制:2.0s 内存限制:512.0MB 采油区域 Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井.被拍卖的整块土地为一个矩形区域,被划分为M× ...
- 蓝桥杯-黑色星期五(算法训练)
题目描述: 有些西方人比较迷信,如果某个月的13号正好是星期五,他们就会觉得不太吉利,用古人的说法,就是"诸事不宜".请你编写一个程序,统计出在某个特定的年份中,出现了多少次既是1 ...
最新文章
- cv2.waitKey(1) == ord('key')的等待键盘用法
- android网络通信之SOAP教程实例汇总
- android进出动画有白屏,Android启动白屏原因及解决方案
- 运行catia_教程 | CATIA宏的录制及应用
- 西固哪家计算机学校好,兰州市西固区有什么技术学校和大学
- video怎么重新加载 vue_vue 事件中更改video的src成功,视频不加载
- UVa 1642 (综合) Magical GCD
- spring 数据库 链接db2_实例讲解使用Spring通过JPA连接到Db2
- 组态王gprs虚拟服务器,GPRS/CDMA 网络通过组态王软件虚拟串口(IO/设备)实现无线远程...
- java实现word,ppt,excel,jpg转pdf
- C#路径中使用斜杠/和反斜杠\的区别
- html网页漂浮广告原理js,JS实现弹性漂浮效果的广告代码
- 欧姆龙sysmac studio 与得克威尔EX-1100(EX-2C0S,EX300S)EtherCat配置与通信
- 【Sql】sql server2008附加数据库:错误9003
- 效果最接近《羊了个羊》(卡牌堆叠游戏)的开源代码 微信小程序开源了
- 如何利用MES系统实现防错和预警?(详细整理,值得收藏)
- java转换docx为doc文件_java使用poi转换doc/docx为pdf
- access中dbs和dbms_DB、DBS、DBMS三者的关系是什么?
- 如何查看大型工程源代码(非常不错)
- css 友情链接效果,SEO:友情链接是什么?友情链接检查样式方位排版