华为OJ:字符串加解密
2024-10-19 04:25:39
题目描述
1、对输入的字符串进行加解密,并输出。
2加密方法为:
当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;
当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;
其他字符不做变化。
3、解密方法为加密的逆过程。
接口描述:
实现接口,每个接口实现1个基本操作:
void Encrypt (char aucPassword[], char aucResult[]):在该函数中实现字符串加密并输出
说明:
1、字符串以\0结尾。
2、字符串最长100个字符。
int unEncrypt (char result[], char password[]):在该函数中实现字符串解密并输出
说明:
1、字符串以\0结尾。
2、字符串最长100个字符。
输入描述:
输入说明
输入一串要加密的密码
输入一串加过密的密码
输出描述:
输出说明
输出加密后的字符
输出解密后的字符
输入例子:
abcdefg
BCDEFGH
出例子:
BCDEFGH
abcdefg
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
char[] enc = in.nextLine().toCharArray();
char[] unEnc = in.nextLine().toCharArray();
Encrypt(enc);
System.out.println(charsToStr(enc));
unEncrypt(unEnc);
System.out.println(charsToStr(unEnc));
}
}
private static void unEncrypt(char[] chars){
for(int i=0;i<chars.length ;i++){
if(isDigits(chars[i])){
if(chars[i] == '0'){
chars[i] = '9';
}else{
chars[i] = (char) (chars[i] - 1);
}
}else if(isUpperCase(chars[i])){
if(chars[i] == 'A')
chars[i] = 'z';
else
chars[i] = (char) (chars[i] - 'A' + 'a' -1);
}else if(isLowCase(chars[i])){
if(chars[i] == 'a')
chars[i] = 'Z';
else
chars[i] = (char) (chars[i] - 'a' + 'A' -1 );
} }
} private static void Encrypt(char[] str){
for(int i=0;i<str.length ;i++){
if(isDigits(str[i])){
if(str[i] == '9'){
str[i] = '0';
}else{
str[i] = (char) (str[i] + 1);
}
}else if(isUpperCase(str[i])){
if(str[i] == 'Z')
str[i] = 'a';
else
str[i] = (char) (str[i] - 'A' + 'a' +1);
}else if(isLowCase(str[i])){
if(str[i] == 'z')
str[i] = 'A';
else
str[i] = (char) (str[i] - 'a' + 'A' +1 );
} }
}
private static String charsToStr(char[] chars){
StringBuffer sb = new StringBuffer();
for(char ch:chars){
sb.append(ch);
}
return sb.toString();
} private static boolean isDigits(char ch){
if(ch >= '0' && ch<='9')
return true;
return false;
}
private static boolean isUpperCase(char ch){
if(ch>='A' && ch<='Z')
return true;
return false;
}
private static boolean isLowCase(char ch){
return ch>='a' && ch<='z';
}
private static boolean isWord(char ch){
return isUpperCase(ch) || isLowCase(ch);
}
}
最新文章
- Inverted sentences
- Linux 指令。
- 去它的h5,我还是用js写原生跨平台app吧
- Thinkphp单字母快捷键
- placeholder 解决UITextField中placeholder和text文本同时显示的问题
- Qt Charts示例
- Python 线程(threading) 进程(multiprocessing)
- node.js实践第二天
- OSG选中效果展示
- HttpReceiveRequestEntityBody 使用应注意的地方
- [ZJOI 2015]幻想乡战略游戏
- Java_深度剖析ConcurrentHashMap
- vue2.0 导出Excel表格数据
- Paramiko和堡垒机实现
- JNI学习小结
- Jaxb 完全手册
- 关于C# winform怎么调用webapi来获取到json数据
- 中国Linux开源镜像站大全
- .NET 如何隐藏Console Application的窗口
- Linux文件描述符
热门文章
- [读行者][学习LinqExpression和Reflection(Emit)]阅读TypeBuilderSample之ExampleFromTheArticle
- [DHCP服务]——DHCP详解
- Oracle中定义package以及存储过程的使用
- 【Dancing Link专题】解题报告
- Leetcode#92 Reverse Linked List II
- apple开发者账号申请
- Centos最小化安装后联网配置
- 管理员必须掌握的八个cmd命令
- Sencha Touch2 时间轴ListPanel
- WPF 与Surface 2.0 SDK 亲密接触 - ScatterView 数据绑定篇