题解 | #字符串加解密#
字符串加解密
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)); } } }#刷题我是认真的#