StringBuffer类的使用

来源:互联网 发布:平安信用卡网络支付 编辑:程序博客网 时间:2024/05/16 00:55

字符串扩展

Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic

Problem Description

Tom有些时候为了记录的方便,常常将一些连续的字符用扩展符'-'简单表示。比如abcdefg可以简写为a-g,即用起始的字符和终止字符中间加上一个扩展符'-'来表示这个字符串。但是为了处理的方便,Tom又必须将这些我们简单记法扩展成原来的字符串。很明显要是人工来做的话必定很麻烦,Tom知道计算机可以帮助他完成这个任务,但是他却不会编程,这的确让他很上火。他知道今天是山东理工大学第三届ACM校赛的日子,届时来自全校的编程爱好者都会来参加比赛,他很兴奋,因为这个困惑他良久的问题终于要被解决了。给你一个含有扩展符'-'的字符串,你的任务就是将他还原成原来的字符串。要求是只处理[a-z][A-Z][0-9]范围内的字符扩展,即只有当扩展符前后的字符同时是小写字母、大写字母或数字时并且扩展符前面的字符不大于后面的字符才进行扩展,其它情况不进行扩展,原样输出。例如:a-RD-e0-b4-B等字符串都不进行扩展。

Input

第一行是一个正整数T,表示共有T组测试数据(T < 100)下面的T行,每一行包括一个长度不大于1000的待扩展字符串.

Output

每组测试数据输出一行扩展后的字符串。

Example Input

3ADEa-g-m02acm-0-5-a-ac-cm-m-A-AC-CM-MWelcometothe3rdACM/ICPCCampusProgrammingContestofSDUT-1-3-A-z-a-Z

Example Output

ADEabcdefghijklm02acm-012345-aaccmm-AACCMMWelcometothe3rdACM/ICPCCampusProgrammingContestofSDUT-123-A-z-a-Z
import java.util.Scanner;public class Main {public static String expand(String str)//定义扩展字符串的函数{StringBuffer buffer=new StringBuffer();//该类对象的内存空间可以自动改变大小char[]c=str.toCharArray();int i;char before;char next;for(i=0;i<c.length;i++){buffer.append(c[i]);//将字符追加到buffer中if(c[i]=='-'){if(i>0&&i<c.length-1){before=c[i-1];next=c[i+1];if(before<=next){if((before>='a'&&next<='z')||(before>='A'&&next<='Z')||(before>='0'&&next<='9')){buffer.deleteCharAt(buffer.length()-1);//删除buffer中的最后一个字符‘-’;for(int a=before+1;a<=next-1;a++)//字符扩展{buffer.append((char)a);}}}}}}return buffer.toString();//将字符数组转为字符串并返回}public static void main(String[] args) {// TODO Auto-generated method stubScanner in=new Scanner(System.in);int T;T=in.nextInt();while(T>0){T--;String str=in.next();String string=expand(str);System.out.println(string);}}}

0 0
原创粉丝点击