java练习——字符串扩展

字符串扩展

Time Limit: 1000 ms  Memory Limit: 65536 KiB

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

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

Sample Input

3
ADEa-g-m02
acm-0-5-a-ac-cm-m-A-AC-CM-M
Welcometothe3rdACM/ICPCCampusProgrammingContestofSDUT-1-3-A-z-a-Z

Sample Output

ADEabcdefghijklm02
acm-012345-aaccmm-AACCMM
Welcometothe3rdACM/ICPCCampusProgrammingContestofSDUT-123-A-z-a-Z

做这个题的时候真的是做到怀疑人生,wa了n次,好在最后终于解决了。

一个技巧吧,就是中间的扩展字符输出,然后本身单独输出。

上两个代码,第一个是判断的当前字符的后两个字符。

第二个先输出第一个字符,当前字符是‘-’,然后判断前后两个字符,最后一个字符输出的时候,要记得判断字符串的长度,如果字符串长度为1就不再输出,否则,输出最后一个字符。

import java.util.*;
public class Main{
	
    public static void main(String args[]) {
    	Scanner cin = new Scanner(System.in);
    	int n = cin.nextInt();
    	while(n-->0) {
    		String s = cin.next();
    		for(int i = 0;i<s.length();i++) {
    			if(i<=s.length()-3&&s.charAt(i)>='a'&&s.charAt(i)<='z'&&s.charAt(i+1)=='-'&&s.charAt(i+2)>='a'&&s.charAt(i+2)<='z'&&(s.charAt(i)<=s.charAt(i+2))) {
    				System.out.print(s.charAt(i));
    				for(int j = (int)s.charAt(i)+1;j<=(int)s.charAt(i+2)-1;j++) {
    					System.out.print((char)j);
    				}
    				i++;
    			}
    			else if(i<=s.length()-3&&s.charAt(i)>='A'&&s.charAt(i)<='Z'&&s.charAt(i+1)=='-'&&s.charAt(i+2)>='A'&&s.charAt(i+2)<='Z'&&(s.charAt(i)<=s.charAt(i+2))) {
    				System.out.print(s.charAt(i));
    				for(int j = (int)s.charAt(i)+1;j<=(int)s.charAt(i+2)-1;j++) {
    					System.out.print((char)j);
    				}
    				i++;
    			}
    			else if(i<=s.length()-3&&s.charAt(i)>='0'&&s.charAt(i)<='9'&&s.charAt(i+1)=='-'&&s.charAt(i+2)>='0'&&s.charAt(i+2)<='9'&&(s.charAt(i)<=s.charAt(i+2))) {
    				System.out.print(s.charAt(i));
    				for(int j = (int)s.charAt(i)+1;j<=(int)s.charAt(i+2)-1;j++) {
    					System.out.print((char)j);
    				}
    				i++;
    			}
    				else
    				System.out.print(s.charAt(i));
    		}
    		System.out.println();
    	}
                                                                                                   	
}
}
 
 


import java.util.*;
public class Main {
	
    public static void main(String args[]) {
    	Scanner cin = new Scanner(System.in);
    	int n = cin.nextInt();
    	while(n-->0) {
    		String s = cin.next();
    		System.out.print(s.charAt(0));
    		for(int i = 1;i<s.length()-1;i++) {
    			if(s.charAt(i)=='-'){
    				if(s.charAt(i-1)>='a'&&s.charAt(i-1)<='z'&&s.charAt(i+1)>='a'&&s.charAt(i+1)<='z'&&s.charAt(i-1)<=s.charAt(i+1)){
    					for(int j = (int)s.charAt(i-1)+1;j<=(int)s.charAt(i+1)-1;j++ )
    						System.out.print((char)j);
    				}
    				else if(s.charAt(i-1)>='A'&&s.charAt(i-1)<='Z'&&s.charAt(i+1)>='A'&&s.charAt(i+1)<='Z'&&s.charAt(i-1)<=s.charAt(i+1)){
    					for(int j = (int)s.charAt(i-1)+1;j<=(int)s.charAt(i+1)-1;j++ )
    						System.out.print((char)j);
    				}
    				else if(s.charAt(i-1)>='0'&&s.charAt(i-1)<='9'&&s.charAt(i+1)>='0'&&s.charAt(i+1)<='9'&&s.charAt(i-1)<=s.charAt(i+1)){
    					for(int j = (int)s.charAt(i-1)+1;j<=(int)s.charAt(i+1)-1;j++ )
    						System.out.print((char)j);
    				}
    				else
    					System.out.print(s.charAt(i));
    			}
    			else
    				System.out.print(s.charAt(i));
    		}
    		if(s.length()!=1)
    		System.out.print(s.charAt(s.length()-1));
    		System.out.println();
    	}
                                                                                                   	
}
}

猜你喜欢

转载自blog.csdn.net/xuan971130/article/details/80074701
今日推荐