close

題目概要:

判斷是否為: 1. palindrome  2. mirrored 3. mirrored palindrome。Ps mirrored判斷方式題目有給。

解題方向:

1. palindrome檢查字串是否回文。

2. mirrored依據題目給的表代換後的文字從後面唸回來會跟原本的一樣。

3. mirrored palindrome跟第2項一樣,只是多了一個檢查代換後的文字是否回文。

程式碼:

//Java
import java.util.Scanner;
class uva401{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
//製作代換表。
char table[]={'A','E','H','I','J','L','M','O','S','T','U','V','W','X','Y','Z','1','2','3','5','8'};
char tableC[]={'A','3','H','I','L','J','M','O','2','T','U','V','W','X','Y','5','1','S','E','Z','8'};
while(sc.hasNext()){
//使用StringBuilder。因為裡面有個method可以使字串反轉。
StringBuilder st=new StringBuilder(sc.next()); //使用者輸入文字。
StringBuilder stC=new StringBuilder(""); //代換後的文字。
//開始代換。
for(int i=0;i<st.length();i++){
int post=-1;
for(int j=0;j<table.length;j++){
if(st.charAt(i)==table[j]){
post=j;
break;
}
}
if(post!=-1)stC.append(tableC[post]);
else stC.append(' ');
}
String stTemp=st.toString(); //儲存一開始的字。
String stCTemp=stC.toString(); //儲存代換後的字。
st.reverse(); //字串反轉。
stC.reverse(); //字串反轉。
//Output
if(stTemp.equals(stC.toString())){
if(stCTemp.equals(stC.toString())) System.out.println(stTemp+" -- "+"is a mirrored palindrome.");
else System.out.println(stTemp+" -- "+"is a mirrored string.");
}else{
if(stTemp.equals(st.toString())) System.out.println(stTemp+" -- "+"is a regular palindrome.");
else System.out.println(stTemp+" -- "+"is not a palindrome.");
}
System.out.println("");
}
}
}
view raw uva401.java hosted with ❤ by GitHub

arrow
arrow
    文章標籤
    Java
    全站熱搜
    創作者介紹
    創作者 a7069810 的頭像
    a7069810

    紀錄自己的程式人生

    a7069810 發表在 痞客邦 留言(0) 人氣()