andy6804tw
8/16/2016 - 1:31 AM

http://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?a=6839 這題處理字串切割要比較麻煩除了英文字母其他的都要捨去(包含數字標點符號空白),所以要利用政則表達是來切出字串,所以先用split( " [ 0-

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 月 */
}