题解 | #字符串加密#
字符串加密
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);
}
}
}

