基于Java解决华为机试之字符串加解密
作者:97的风 发布时间:2022-10-12 17:32:39
标签:华为机试,Java,字符串,加密 ,解密
1.简述
描述:
1、对输入的字符串进行加解密,并输出。
2、加密方法为:
当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;
当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;
其他字符不做变化。
3、解密方法为加密的逆过程。
本题含有多组样例输入。
数据范围:输入的两个字符串长度满足1 \le n \le 1000 \1≤n≤1000
,保证输入的字符串都是大小写字母或者数字
输入描述:
输入说明
输入一串要加密的密码
输入一串加过密的密码
输出描述:
输出说明
输出加密后的字符
输出解密后的字符
2.示例1
输入:
abcdefg
BCDEFGH
输出:
BCDEFGH
abcdefg
2.代码实现
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
System.out.println(encode(in.nextLine()));
System.out.println(decode(in.nextLine()));
}
}
//加密函数
private static String encode(String code){
char[] t = code.toCharArray(); //将String对象转换为字符数组
for(int i=0; i < t.length; i++){
if(t[i]>='a' && t[i]<'z')
t[i] = (char)(t[i] - 'a' + 'A' + 1);
else if(t[i] == 'z')
t[i] = 'A';
else if(t[i]>='A' && t[i]<'Z')
t[i] = (char)(t[i] - 'A' + 'a' + 1);
else if(t[i] == 'Z')
t[i] = 'a';
else if(t[i]>='0' && t[i]<'9')
t[i] = (char)(t[i]+1);
else if(t[i] == '9')
t[i] = '0';
}
return String.valueOf(t);
}
//解密函数
private static String decode(String password){
char[] t = password.toCharArray();
for(int i=0; i < t.length; i++){
if(t[i]>'a' && t[i]<='z')
t[i] = (char)(t[i] - 'a' + 'A' - 1);
else if(t[i] == 'a')
t[i] = 'Z';
else if(t[i]>'A' && t[i]<='Z')
t[i] = (char)(t[i] - 'A' + 'a' - 1);
else if(t[i] == 'A')
t[i] = 'z';
else if(t[i]>'0' && t[i]<='9')
t[i] = (char)(t[i]-1);
else if(t[i] == '0')
t[i] = '9';
}
return String.valueOf(t);
}
}
来源:https://blog.51cto.com/u_15488507/5023423
0
投稿
猜你喜欢
- 一、数组的基本用法1.什么是数组数组:存储一组相同数据类型的数据的集合。2.定义数组 int[] :int类型数组 do
- 前言这篇文章主要是从类中static修饰的成员变量,static修饰的成员方法这两个方面来讲解static,static成员变量的初始化会在
- 本文实例讲述了C#检查字符串是否是合法URL地址的方法。分享给大家供大家参考。具体实现方法如下:protected string HTTPC
- 一、背景新做了一个的需求,需要在SpringBoot项目中引入了多个依赖,然后就感觉idea下载依赖包的时间很漫长,然后我就网上找了解决办法
- 基础知识介绍: @RequestBody主要用来接收前端传递给后端的json字符串中的
- 需求基于MTK8163 8.1平台定制导航栏部分,在左边增加音量减,右边增加音量加思路需求开始做之前,一定要研读SystemUI Navig
- EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。ehcach
- java -jar设置添加启动参数方法java -jar 参数前后位置说明springboot项目启动的时候可以直接使用java -jar
- 什么是枚举?枚举是JDK5引入的新特性。在某些情况下,一个类的对象是固定的,就可以定义为枚举。在实际使用中,枚举类型也可以作为一种规范,保障
- java String的深入理解一、Java内存模型 按照官方的说法:Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和
- 简介JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation。在任何时候,当你要处理一个应用程序的业务逻
- 是否允许循环依赖和bean的命名重复取决于beanfactory的两大属性allowBeanDefinitionOverriding和all
- 场景:使用MyBatis批量查询(select)、批量插入(insert)、批量更新(update)、批量删除(delete)操作MySQL
- 1. 调试追踪代码: public static void enterTryMethod() { S
- JAVA基础八股文Switch能支持哪些类型?jdk5之前,switch能够作用在byte,short,char,int(实际上都是提升为i
- 一、 代码块的概念在探究对象初始化顺序之前,我们先通过代码来了解一下代码块的概念。class Test{ public stat
- 代码实例一 using System; using System.IO; using System.Collections; using S
- 1. 问题描述springboot的面世,成为Java开发者的一大福音,大大提升了开发的效率,其实springboot只是在maven的基础
- 这个小游戏是我和我姐们儿的JAVA课程设计,也是我做的第一个JAVA项目,适合初学者,希望能帮到那些被JAVA课设所困扰的孩纸们~~~一、该
- 如果只想查看注解,请跳到文章末尾部分简介在前后端进行数据交互中,在前端把数据传送到后端前,一般会先进行校验一次,校验成功之后,才把数据发送到