作者csieflyman (风之骄子)
看板java
标题Re: [问题]今年台银IT人员招考试题
时间Thu Nov 18 22:04:50 2010
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
1F:推 mgtsai:那个 else sb.append(b); 去掉, 因为找不到时不会加进 C 中 11/19 00:14
2F:→ bleed1979:测资应该只限定A ~ Z和空白字元,仍要加入。 只是, 11/19 07:46
3F:→ bleed1979:如果是OJ的题目,我就建表输出了。 11/19 07:48
4F:→ bleed1979:另外,给原po,a >= 0这个我会一开始就判断。 11/19 07:50
5F:→ csieflyman:我随手写的没想这麽多例外检查啦 重点是使用ASCII code 11/19 09:57
6F:→ csieflyman:因为原po是问有没有改良的方法 11/19 09:59
7F:→ derekQQ:综合上下文,我比较喜欢这个写法~ 11/21 17:13
8F:→ derekQQ:直接对ASCII 做处理就好 11/21 17:14