http://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?a=6839
這題處理字串切割要比較麻煩除了英文字母其他的都要捨去(包含數字標點符號空白),所以要利用政則表達是來切出字串,所以先用split( " [ 0-9-\pP ] " ) 分別切出0~9(\d)以及標點符號 \pP是代表萬國碼字元雙引號內要跳脫字元所以兩個反斜線,最後切出來的s1以及s2長度不一因為空白也切進去了所以建立一個List儲存非""的字串 That 1000 treasure was not in City. =>That treasure was not in City That power is not at Chiayi123. =>That power is not at Chiayi
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
int n=Integer.parseInt(scn.nextLine());
while(n--!=0){
String s1[]=scn.nextLine().split("[0-9-\\pP]"),s2[]=scn.nextLine().split("[0-9-\\pP]");
ArrayList <String> list1=new ArrayList<String>(),list2=new ArrayList<String>();
for(int i=0;i<s1.length;i++){
if(!s1[i].equals(""))
list1.add(s1[i]);
}
for(int i=0;i<s2.length;i++){
if(!s2[i].equals(""))
list2.add(s2[i]);
}
boolean b=true,p=false;
for(int i=0;i<list1.size();i++){
if(!list1.get(i).equals(list2.get(i))){
if(b){
if(p)
System.out.print(" ");
System.out.print(list1.get(i));
b=false;p=true;
}
else{
if(p)
System.out.print(" ");
System.out.print(list2.get(i));
b=true;p=true;
}
}
}
System.out.println();
}
}
/*
題目:[C_ST76-易] 文字解密
作者:1010
時間:西元 2016 年 8 月 */
}