题目:
【问题描述】
小明设计了一种文章加密的方法:对于每个字母 c,将它变成某个另外的
字符 Tc。下表给出了字符变换的规则:
字母cTc字母cTc字母cTc字母cTc
aynlAYNL
bxogBXOG
cmpoCMPO
ddquDDQU
earfEARF
fcssFCSS
gitzGITZ
hkupHKUP
invwINVW
jtwbJTWB
kjxrKJXR
lhyeLHYE
mqzvMQZV
例如,将字符串 YeRi 加密可得字符串 EaFn。
小明有一个随机的字符串,加密后为
EaFnjISplhFviDhwFbEjRjfIBBkRyY
(由 30 个大小写英文字母组成,不包含换行符),请问原字符串是多少?
(如果你把以上字符串和表格复制到文本文件中,请务必检查复制的内容
是否与文档中的一致。在试题目录下有一个文件 str.txt,第一行为上面的字符
串,后面 52 行依次为表格中的内容。)
【答案提交】
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个
只包含 30 个大小写英文字母的字符串,在提交答案时只填写这个字符串,填写
多余的内容将无法得分。
分析:
首先这52个是每个字母都有对应的字母,所以用hashmap来做,用扫描器把52个值赋给hashmap,然后把给定的字符串转为char数组,获取hashmap中每一个对应的键对应的值打印出来。
步骤:
package 第九届省赛;
import java.util.HashMap;
import java.util.Scanner;
public class 测试1 {
public static void main(String[] args) {
HashMap<Object, Object> hashMap = new HashMap<>();
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 52; i++) {
char c = sc.next().charAt(0);
char tc = sc.next().charAt(0);
hashMap.put(tc, c);
}
String ch = sc.next();
char[] charArray = ch.toCharArray();
for (char c : charArray) {
System.out.print(hashMap.get(c));
}
}
}