试题 B: 解密
本题总分:5 分
【问题描述】
小明设计了一种文章加密的方法:对于每个字母 c,将它变成某个另外的
字符 Tc。下表给出了字符变换的规则:
字母c Tc 字母c Tc 字母c Tc 字母c Tc
a y n l A Y N L
b x o g B X O G
c m p o C M P O
d d q u D D Q U
e a r f E A R F
f c s s F C S S
g i t z G I T Z
h k u p H K U P
i n v w I N V W
j t w b J T W B
k j x r K J X R
l h y e L H Y E
m q z v M Q Z V
例如,将字符串 YeRi 加密可得字符串 EaFn。
小明有一个随机的字符串,加密后为
EaFnjISplhFviDhwFbEjRjfIBBkRyY
(由 30 个大小写英文字母组成,不包含换行符),请问原字符串是多少?
(如果你把以上字符串和表格复制到文本文件中,请务必检查复制的内容
是否与文档中的一致。在试题目录下有一个文件 str.txt,第一行为上面的字符
串,后面 52 行依次为表格中的内容。)
【答案提交】
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个
只包含 30 个大小写英文字母的字符串,在提交答案时只填写这个字符串,填写
多余的内容将无法得分。
package ss;
public class px {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "EaFnjISplhFviDhwFbEjRjfIBBkRyY";//字母顺序
char[] arr=new char[s.length()];
String t1 = "yxmdacikntjhqlgoufszpwbrev";//小写打出来
String t2 = "TXMDACIKNTJHQLGOUFSZPWBREV";//大写
char[] x=new char[26];
char[] d=new char[26];
for(int i=0;i<26;i++) {
int ix=t1.charAt(i)-'a';//表示返回到顺序
int id=t2.charAt(i)-'A';
x[ix]=(char)('a'+i);
d[ix]=(char)('A'+i);
}
for(int i=0;i<s.length();i++) {
if(s.charAt(i)>='A'&&s.charAt(i)<='Z') {
arr[i]=d[s.charAt(i)-'A'];
}else {
arr[i]=x[s.charAt(i)-'a'];
}
}
System.out.println(String.valueOf(arr));
}
}
YeRikGSunlRzgDlvRwYkXkrGWWhXaA
340

被折叠的 条评论
为什么被折叠?



