题解 | #字符串加解密#
字符串加解密
https://www.nowcoder.com/practice/2aa32b378a024755a3f251e75cbf233a
该问题主要考虑解法就是定义字典,分别是加密字典和解密字典;
分别定义一个加密方法,一个解密算法;对加密内容使用加密字典进行逐个字符转换,针对解密方法,对传入的字符串逐个使用解密字典进行解密;
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { run(); } // 加密字典 private static Map<Character,Character> encryptionDictionary = new HashMap<>(); // 解密字典 private static Map<Character,Character> decryptDictionary = new HashMap<>(); static { // 小写 char charLowerStart = 'a'; char charLowerEnd = 'z'; char numLowerStart = '0'; // 大写 char charUpperStart = 'A'; char charUpperEnd = 'Z'; for (int i = 0; i < 25; i++) { encryptionDictionary.put((char)(charLowerStart+i),(char)(charUpperStart+i+1)); } for (int i = 0; i < 25; i++) { encryptionDictionary.put((char)(charUpperStart+i),(char)(charLowerStart+i+1)); } encryptionDictionary.put(charLowerEnd,charUpperStart); encryptionDictionary.put(charUpperEnd,charLowerStart); for (int i = 0; i < 9; i++) { encryptionDictionary.put((char)(numLowerStart+i),(char)(numLowerStart+i+1)); } encryptionDictionary.put('9','0'); for (Map.Entry<Character, Character> characterCharacterEntry : encryptionDictionary.entrySet()) { decryptDictionary.put(characterCharacterEntry.getValue(),characterCharacterEntry.getKey()); } } private static void run() { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 String str1 = in.nextLine(); String str2 = in.nextLine(); String result1 = encryption(str1); String result2 = decrypt(str2); System.out.println(result1); System.out.println(result2); } private static String decrypt(String str1) { char[] charArray = str1.toCharArray(); for (int i = 0; i < charArray.length; i++) { charArray[i] = decryptDictionary.get(charArray[i]); } return new String(charArray); } private static String encryption(String str1) { char[] charArray = str1.toCharArray(); for (int i = 0; i < charArray.length; i++) { charArray[i] = encryptionDictionary.get(charArray[i]); } return new String(charArray); } }