2013年7月23日 星期二

[UVA]Decode the Mad Man

CPE 10425、UVA 10222程式解題。






























解題觀念:

這題老實說我剛開始完全不懂......因為我想像力沒有那麼豐富聯想力也沒有那麼強= =

原來只是要你輸出你所按下的字母,再往左邊數兩個的那個字母而已......
(嗯?我怎麼知道的? 好吧~是學長告訴我的....)

所以這題你必須要建立鍵盤對照表利用字串去建立

而且輸出字母皆為小寫,所以要注意大小寫轉換

再來就是非鍵盤對應符號(例如空白鍵)不需做改變,保持原樣輸出即可。



解題步驟:



首先建立鍵盤對照表,請參照上面程式碼。

再來宣告一個整數變數,等等要搜尋字串位置時會用到。

使用者輸入字串,轉為小寫(.toLawerCase()語法);再來就是搜尋字串位置(.indexOf()語法);

搜尋哪個字串的位置??-->抓取使用者所輸入的字串的字元(.charAt()語法)

用if判斷式,判斷ans的字元位置是否有在鍵盤對照表裡,

如果有就將位置減2(向左一兩格)之後印出,如果沒有則保持原樣印出。



EX:

k[r dyt I[o  ((為了方便,我只取一個字母來解釋

ans = keyboard.indexOf(str.charAt(0)) -->ans = keyboard.indexOf(k) -->ans = 33 (鍵盤表第33個字)

進入if判斷式,ans不等於-1,符合,將ans-2,印出鍵盤表第31個字母-->h

((後面字母以此類推。

BY 小K

沒有留言:

張貼留言