题目:
描述
对输入的字符串进行加解密,并输出。
加密方法为:
当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;
当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;
其他字符不做变化。
解密方法为加密的逆过程。
数据范围:输入的两个字符串长度满足1≤n≤1000 ,保证输入的字符串都是只由大小写字母或者数字组成
输入描述:
第一行输入一串要加密的密码
第二行输入一串加过密的密码
输出描述:
第一行输出加密后的字符
第二行输出解密后的字符
个人解法:
import java.util.*;
public class Main{
public static void main(String [] args) {
//主题内容 审题可得知,加密算法
//输入
//输出 需要加密后输出
/*加密算法:
* 字母:后一个字母替换并且变大写,注意Z后面a,小变大,大变小的规则
* 数字:后一个数字替代,注意9后面0替换
* 解密算法:
* 字母:前一个字母替换并且变大写,注意a后面Z,小变大,大变小的规则
* 数字:前一个数字替代,注意0后面面9替换
@author:pfsu
@qq:1098748122
@csdn:gkkk_1
* */
Scanner input = new Scanner(System.in);
while (input.hasNext()){
String str1 = input.nextLine();
String str2 = input.nextLine();
System.out.println(jiami(str1));
System.out.println(jiemi(str2));
}
}
public static String jiami(String str1){
char str1t[] = str1.toCharArray();
//加密过程
for(int i=0;i< str1.length();i++){
if(str1t[i]>='A' && str1t[i]<='Z'){
if(str1t[i] == 'Z') {
str1t[i] = 'a';
} else {
str1t[i] = (char)(str1t[i]+1+32);
}
} else if (str1t[i]>='a' && str1t[i]<='z') {
if(str1t[i] == 'z') {
str1t[i] = 'A';
} else {
str1t[i] = (char)(str1t[i]+1-32);
}
} else if (str1t[i]>='0' && str1t[i]<='9') {
if(str1t[i] == '9') {
str1t[i] = '0';
} else {
str1t[i] = (char)(str1t[i]+1);
}
}
}
return String.valueOf(str1t);
}
public static String jiemi(String str2){
char str2t[] = str2.toCharArray();
//解密过程
for(int i=0;i< str2.length();i++){
if(str2t[i]>='A' && str2t[i]<='Z'){
if(str2t[i] == 'A') {
str2t[i] = 'z';
} else {
str2t[i] = (char)(str2t[i]-1+32);
}
} else if (str2t[i]>='a' && str2t[i]<='z') {
if(str2t[i] == 'a') {
str2t[i] = 'Z';
} else {
str2t[i] = (char)(str2t[i]-1-32);
}
} else if (str2t[i]>='0' && str2t[i]<='9') {
if(str2t[i] == '0') {
str2t[i] = '9';
} else {
str2t[i] = (char)(str2t[i]-1);
}
}
}
return String.valueOf(str2t);
}
}
心得:这个题可能不难,但是我在家自己从思考到正确花了近2个小时了,不得不说还需要进一步提高个人的算法能力。