字符串擴展
Problem Description
Tom有些時候爲了記錄的方便,常常將一些連續的字符用擴展符'-'簡單表示。比如abcdefg可以簡寫爲a-g,即用起始的字符和終止字符中間加上一個擴展符'-'來表示這個字符串。但是爲了處理的方便,Tom又必須將這些我們簡單記法擴展成原來的字符串。很明顯要是人工來做的話必定很麻煩,Tom知道計算機可以幫助他完成這個任務,但是他卻不會編程,這的確讓他很上火。他知道今天是山東理工大學第三屆ACM校賽的日子,屆時來自全校的編程愛好者都會來參加比賽,他很興奮,因爲這個困惑他良久的問題終於要被解決了。給你一個含有擴展符'-'的字符串,你的任務就是將他還原成原來的字符串。要求是隻處理[a-z]、[A-Z]、[0-9]範圍內的字符擴展,即只有當擴展符前後的字符同時是小寫字母、大寫字母或數字時並且擴展符前面的字符不大於後面的字符才進行擴展,其它情況不進行擴展,原樣輸出。例如:a-R、D-e、0-b、4-B等字符串都不進行擴展。
Input
第一行是一個正整數T,表示共有T組測試數據(T < 100)。下面的T行,每一行包括一個長度不大於1000的待擴展字符串.
Output
每組測試數據輸出一行擴展後的字符串。
Example Input
3 ADEa-g-m02 acm-0-5-a-ac-cm-m-A-AC-CM-M Welcometothe3rdACM/ICPCCampusProgrammingContestofSDUT-1-3-A-z-a-Z
Example Output
ADEabcdefghijklm02 acm-012345-aaccmm-AACCMM Welcometothe3rdACM/ICPCCampusProgrammingContestofSDUT-123-A-z-a-Z
Hint
Author
import java.util.*;
import java.math.*;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int T = input.nextInt();
while (T-- > 0) {
String s = input.next();
char a[] = new char[1100];
a = s.toCharArray();
System.out.print(a[0]);
for (int i = 1; i < a.length-1; i++) {
if (a[i] != '-') {
System.out.print(a[i]);
} else if ( a[i] == '-') {
if ('a' <= a[i - 1] && a[i - 1] <= 'z' && 'a' <= a[i + 1] && a[i + 1] <= 'z'
&& a[i + 1] >= a[i - 1]) {
char c = (char) (a[i - 1] + 1);
while (c < a[i + 1]) {
System.out.print(c);
c = (char) (c + 1);
}
} else if ('A' <= a[i - 1] && a[i - 1] <= 'Z' && 'A' <= a[i + 1] && a[i + 1] <= 'Z'
&& a[i + 1] >= a[i - 1]) {
char c = (char) (a[i - 1] + 1);
while (c < a[i + 1]) {
System.out.print(c);
c = (char) (c + 1);
}
} else if ('0' <= a[i - 1] && a[i - 1] <= '9' && '0' <= a[i + 1] && a[i + 1] <= '9'
&& a[i + 1] >= a[i - 1]) {
char c = (char) (a[i - 1] + 1);
while (c < a[i + 1]) {
System.out.print(c);
c = (char) (c + 1);
}
}
else System.out.print("-");
}
}
if(a.length-1!=0)
System.out.print(a[a.length-1]);
System.out.println();
}
}
}