NOI的1.7.12加密的病历单

描述
小英是药学专业大三的学生,暑假期间获得了去医院药房实习的机会。
在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。
经过研究,小英发现了如下加密规律(括号中是一个“原文 -> 密文”的例子)

  1. 原文中所有的字符都在字母表中被循环左移了三个位置(dec -> abz)
  2. 逆序存储(abcd -> dcba )
  3. 大小写反转(abXY -> ABxy)

输入
一个加密的字符串。(长度小于50且只包含大小写字母)
输出
输出解密后的字符串。
样例输入
GSOOWFASOq
样例输出
Trvdizrrvj

解法:

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
	Scanner in=new Scanner(System.in);
	String a=in.nextLine();
	char b[]=a.toCharArray();
	char c[]=new char[b.length];//表示第二个规律还原的字符
	//将第三个规律还原
	for(int i=0;i<b.length;i++) {
		if(b[i]>='A'&&b[i]<='Z') {
			for(int j=0;j<26;j++) {
				if(b[i]==(char)('A'+j)) {
					b[i]=(char)('a'+j);
				}
			}
		}
		else if(b[i]>='a'&&b[i]<='z') {
			for(int j=0;j<26;j++) {
				if(b[i]==(char)('a'+j)) {
					b[i]=(char)('A'+j);
				}		
			}
		}
	}
	//将第二个规律还原
	for(int i=0;i<b.length;i++) {
			c[i]=b[b.length-i-1];
			}
	//将第一个规律还原
	for(int i=0;i<c.length;i++) {
		if(c[i]>='A'&&c[i]<='W') {
				System.out.print((char)(c[i]+3));
			}
		else if(c[i]>='X'&&c[i]<='Z') {
			if(c[i]=='X') {
				System.out.print('A');
			}
			else if(c[i]=='Y') {
				System.out.print('B');
			}
			else if(c[i]=='Z') {
				System.out.print('C');
				}
			}
		else if(c[i]>='a'&&c[i]<='w') {
			System.out.print((char)(c[i]+3));
			}
		else if(c[i]>='x'&&c[i]<='z') {
			if(c[i]=='x') {
				System.out.print('a');
			}
			else if(c[i]=='y') {
				System.out.print('b');
			}
			else if(c[i]=='z') {
				System.out.print('c');
			}		
			}
		}
	
	}
}
发布了56 篇原创文章 · 获赞 51 · 访问量 1287

猜你喜欢

转载自blog.csdn.net/weixin_45455503/article/details/104407478
今日推荐