题解 | #字符串加解密#
字符串加解密
https://www.nowcoder.com/practice/2aa32b378a024755a3f251e75cbf233a
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
// 加密方法
public static String encrypt(String input) {
StringBuilder encrypted = new StringBuilder();
for (char ch : input.toCharArray()) {
if (Character.isLetter(ch)) {
// 处理字母
if (Character.isLowerCase(ch)) {
// 小写字母,转成对应的大写字母的下一个字母
encrypted.append(ch == 'z' ? 'A' : (char)(ch + 1) == 'a' ? 'B' : (char)Character.toUpperCase(ch + 1));
} else {
// 大写字母,转成对应的小写字母的下一个字母
encrypted.append(ch == 'Z' ? 'a' : (char)(ch + 1) == 'A' ? 'b' : (char)Character.toLowerCase(ch + 1));
}
} else if (Character.isDigit(ch)) {
// 处理数字
encrypted.append((ch - '0' + 1) % 10);
} else {
// 非字母和数字的字符原样添加
encrypted.append(ch);
}
}
return encrypted.toString();
}
// 解密方法
public static String decrypt(String input) {
StringBuilder decrypted = new StringBuilder();
for (char ch : input.toCharArray()) {
if (Character.isLetter(ch)) {
// 处理字母
if (Character.isLowerCase(ch)) {
// 小写字母,解密为大写字母的前一个字母
decrypted.append(ch == 'a' ? 'Z' : (char)(ch - 1) == 'z' ? 'A' : (char)Character.toUpperCase(ch - 1));
} else {
// 大写字母,解密为小写字母的前一个字母
decrypted.append(ch == 'A' ? 'z' : (char)(ch - 1) == 'Z' ? 'a' : (char)Character.toLowerCase(ch - 1));
}
} else if (Character.isDigit(ch)) {
// 处理数字
decrypted.append((ch - '0' - 1 + 10) % 10);
} else {
// 非字母和数字的字符原样添加
decrypted.append(ch);
}
}
return decrypted.toString();
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) { // 注意 while 处理多个 case
String a = in.nextLine();
String b = in.nextLine();
System.out.println(encrypt(a));
System.out.println(decrypt(b));
}
}
}
#刷题我是认真的#