题解 | #字符串加密#
字符串加密
https://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3
回忆起了密码学的点点滴滴。。。
简单来说,这题就是一个经典的关键字密码的实现,而且还贴心地告诉我们明文以及密钥都只含小写字母,只要根据密钥维护一个字典即可。
import java.util.HashMap; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { // 关键字密码 String key = in.next(); String plain = in.next(); HashMap<Character, Character> decodeDict = new HashMap<>(); HashMap<Character, Character> encodeDict = new HashMap<>(); char alpha = 'a'; // 填充关键字 for (char ch : key.toCharArray()) { if (!decodeDict.containsKey(ch)) { decodeDict.put(ch, alpha); encodeDict.put(alpha, ch); alpha++; } } // 补充后面的字母 for (char ch = 'a'; ch <= 'z'; ch++) { if (!decodeDict.containsKey(ch)) { decodeDict.put(ch, alpha); encodeDict.put(alpha, ch); alpha++; } } // 加密 StringBuilder cipher = new StringBuilder(); for (char ch : plain.toCharArray()) { cipher.append(encodeDict.get(ch)); } System.out.println(cipher); } } }