题目描述
小英是药学专业大三的学生,暑假期间获得了去医院药房实习的机会。
在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。
经过研究,小英发现了如下加密规律(括号中是一个“原文 -> 密文”的例子)
-
原文中所有的字符都在字母表中被循环右移了三个位置(dec→ghf)
-
逆序存储(abcd→dcba)
-
大小写反转(abXY→ABxy)
输入格式
一个加密的字符串。(长度小于 50 且只包含大小写字母)
输出格式
输出解密后的字符串。
源码
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
int len = str.length();
int[] result = new int[len+1];
//获取ASCII
for(int i=0;i<len;i++) {
String ch = str.substring(i,i+1);
result[i] = ch.charAt(0);
}
//转换大小写
for(int i=len-1;i>=0;i--) {
if(result[i]>='a' && result[i]<='z') {
result[i] -= 32;
}else {
result[i] += 32;
}
}
//右移3位,即ASCII+3,若y/Y和z/Z+3超出,则减去26。
for(int i=len-1;i>=0;i--) {
if(result[i]>='x' && result[i]<='z') {
result[i] -= 26;
}else if(result[i]>='X' && result[i]<='Z'){
result[i] -= 26;
}
result[i] += 3;
}
//逆序输出
for(int i=len-1;i>=0;i--) {
System.out.print((char)result[i]);
}
}
}