Re: [問題]今年台銀IT人員招考試題

看板java作者 (風之驕子)時間15年前 (2010/11/18 22:04), 編輯推噓1(107)
留言8則, 4人參與, 最新討論串2/5 (看更多)
public static void main(String[] args) { Compress c = new Compress(); System.out.println(c.compressProcess("3", "MEET ME XYZ")); } public String compressProcess(String A, String B) { int a = Integer.parseInt(A); StringBuffer sb = new StringBuffer(); for(int i = 0; i < B.length(); i++) { char b = B.charAt(i); if(b >= 65 && b <= 90 && a >= 0) sb.append((char) (65 + (((b - 65) + a) % 26))); else sb.append(b); } return sb.toString(); } 結果: PHHW PH ABC ※ 引述《hbk1015 (邪道)》之銘言: : 各位好,今年台銀招考IT人員的試題我的寫法不知道還有沒有改良的空間,請大家賜教, : 原始程式如下: : import java.io.*; : public class Compress{ : private String S ="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; : private String C = ""; : public static void main(String[] args){ : Console CC = System.console(); : String A = CC.readLine(); : String B = CC.readLine(); : Compress CP = new Compress(); : String C = CP.compressProcess(A, B); : System.out.println(C); : } : public String compressProcess(String A, String B){ : int a = Integer.parseInt(A); : int b = 0; : for(int i = 0; i < B.length(); i++){ : for(int j = 0; j < S.length(); j++){ : if(S.charAt(j) == B.charAt(i)){ : b = (j + a) % 26; : C += S.charAt(b); : } : } : } : return C; : } : } : 題目請參考http://210.68.8.81/tw/ptc_99taiwan/doc/rinbancnw.pdf -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.70.79.93

11/19 00:14, , 1F
那個 else sb.append(b); 去掉, 因為找不到時不會加進 C 中
11/19 00:14, 1F

11/19 07:46, , 2F
測資應該只限定A ~ Z和空白字元,仍要加入。 只是,
11/19 07:46, 2F

11/19 07:48, , 3F
如果是OJ的題目,我就建表輸出了。
11/19 07:48, 3F

11/19 07:50, , 4F
另外,給原po,a >= 0這個我會一開始就判斷。
11/19 07:50, 4F

11/19 09:57, , 5F
我隨手寫的沒想這麼多例外檢查啦 重點是使用ASCII code
11/19 09:57, 5F

11/19 09:59, , 6F
因為原po是問有沒有改良的方法
11/19 09:59, 6F

11/21 17:13, , 7F
綜合上下文,我比較喜歡這個寫法~
11/21 17:13, 7F

11/21 17:14, , 8F
直接對ASCII 做處理就好
11/21 17:14, 8F
文章代碼(AID): #1CvJA5qD (java)
討論串 (同標題文章)
文章代碼(AID): #1CvJA5qD (java)