题解 | #字符串加解密#
字符串加解密
http://www.nowcoder.com/practice/2aa32b378a024755a3f251e75cbf233a
import java.util.*;
import java.util.regex.Pattern;
/*
对输入的字符串进行加解密,并输出。
加密方法为:
当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;
当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;
其他字符不做变化。
解密方法为加密的逆过程。
数据范围:输入的两个字符串长度满足 1 \le n \le 1000 \1≤n≤1000 ,保证输入的字符串都是只由大小写字母或者数字组成
* */
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
System.out.println(encryption(sc.nextLine()));
System.out.println(decrypt(sc.nextLine()));
}
}
//加密
private static String encryption(String str){
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) >= 'A' && str.charAt(i) <= 'Y') {
sb.append((char) (str.charAt(i) + 1 + 32));
} else if (str.charAt(i) == 'Z') {
sb.append('a');
} else if (str.charAt(i) >= 'a' && str.charAt(i) <= 'y') {
sb.append((char) (str.charAt(i) + 1 - 32));
} else if (str.charAt(i) == 'z') {
sb.append('A');
} else if (str.charAt(i) >= '0' && str.charAt(i) <= '8') {
sb.append((char) (str.charAt(i) + 1));
} else if (str.charAt(i) == '9') {
sb.append('0');
} else
sb.append(str.charAt(i));
}
return String.valueOf(sb);
}
//解密
private static String decrypt(String str){
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) >= 'B' && str.charAt(i) <= 'Z') {
sb.append((char) (str.charAt(i) - 1 + 32));
} else if (str.charAt(i) == 'A') {
sb.append('z');
} else if (str.charAt(i) >= 'b' && str.charAt(i) <= 'z') {
sb.append((char) (str.charAt(i) - 1 + -32));
} else if (str.charAt(i) == 'a') {
sb.append('Z');
} else if (str.charAt(i) >= '1' && str.charAt(i) <= '9') {
sb.append((char) (str.charAt(i) - 1));
} else if (str.charAt(i) == '0') {
sb.append('9');
} else
sb.append(str.charAt(i));
}
return String.valueOf(sb);
}
}