JzxxOJ1786: 【基础】字符串展开

如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字符子串,我们就把它当作一种简写,输出时,用连续递增的字母或数字串替代其中的减号,即将上面两个子串分别输出为“defgh”和“45678”。具体约定如下:
(1) 遇到下面的情况需要对字符串进行展开:在输入的字符串中,出现了减号“-”,减号两侧同为小写字母或同为数字,且按照ASCII码的顺序,减号右边的字符严格大于左边的字符。
(2) 如果减号右边的字符恰好是左边字符的后继,只删除中间的减号,例如:“d-e”应输出为“de”,“3-4”应输出为“34”。如果减号右边的字符按照ASCII码的顺序小于或等于左边字符,输出时,要保留中间的减号,例如:“d-d”应输出为“d-d”,“3-1”应输出为“3-1”。
输入
仅有一行包含一个长度不超过200的字符串,仅由数字、小写字母和减号“-”组成。行首和行末均无空格。
输出
仅有一行,为展开后的字符串。
样例
输入
abcs-w-y1234-9s-4zz
输出
abcstuvwxy123456789s-4zz

其实,这道题并不是那么难。
首先看一下字符串:
a-z
首先,要满足它是减号,并且是中间的。
然后,两边字符要同级,即都为0~9或A~Z或a~z。
最后,前面要小于后面。
而且,是要从a[i-1]+1开始,因为前面的字符已经加过了。
比如a-z
输出是a b c d e f g h i j k l m n o p q r s t u v w x y z
加粗的才是真正加的,其他的之前或之后加过了。
AC代码(判断写的不太好):

#include<iostream>
#include<string>
using namespace std;
int main(){
   
    int i;
    string a, s;
    ge
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值