字符串展开 Pascal

[复制链接]
查看11 | 回复2 | 2010-7-7 18:58:25 | 显示全部楼层 |阅读模式
【试题描述】
如果在输入的字符串中,含有类似于“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

回复

使用道具 举报

千问 | 2010-7-7 18:58:25 | 显示全部楼层
因为这个问题和http://zhidao.baidu.com/question/164688465.html?si=7上面的一模一样,我就直接把我的答案贴来了...这不是07年的noip第二题的“简化版”吗...这道题就是一个简单的模拟,就是判断条件比较麻烦,所以应该先划分好条件,找到判断的最简洁的方法。如果只是做这一题的话,楼上的代码就可以了。建议楼主别做这道题了,直接挑战一下noip(在tyvjp1053上可以提交),下面是我的程序,稍微有点麻烦,不过还是很容易看懂的。如果实在看不懂的话说一声,我再加上解释。如果楼主想用下面这个代码做这道简化题的话,就在处理数据前把p1:=0;p2:=1;p3:=1;就ok了。program e
回复

使用道具 举报

千问 | 2010-7-7 18:58:25 | 显示全部楼层
这里是代码,如果楼主还有疑问可以hi我vars,s1,s2:string;str1,str2:string;i:integer;c,c1,c2:Char;f:Extended;begins2:='';s1:='';f:=f+1;s:=Trim(mmo1.Lines.Text);
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行