【样例输出】
t urqzjrze xl gpqaemfju.
【样例输入】
huxihxhxu
ilovechina!
【样例输出】
tqnezuvtoi!
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String key = sc.nextLine(); // 读入密钥
String str = sc.nextLine(); // 读入待加密字符串
// 去掉密钥中的重复字母,并将其反序
StringBuilder sb = new StringBuilder();
for (int i = key.length() - 1; i >= 0; i--) {
char ch = key.charAt(i);
if (sb.indexOf(String.valueOf(ch)) == -1) {
sb.append(ch);
}
}
// 将字母表中的其它字母以反序追加到后面
for (char ch = 'z'; ch >= 'a'; ch--) {
if (sb.indexOf(String.valueOf(ch)) == -1) {
sb.append(ch);
}
}
// 构建加密映射表
String alphabet = "abcdefghijklmnopqrstuvwxyz";
String cipher = sb.toString();
Map<Character, Character> map = new HashMap<>();
for (int i = 0; i < alphabet.length(); i++) {
map.put(alphabet.charAt(i), cipher.charAt(i));
}
// 对字符串进行加密
StringBuilder result = new StringBuilder();
for (char ch : str.toCharArray()) {
if (Character.isLowerCase(ch)) {
result.append(map.get(ch));
} else {
result.append(ch);
}
}
System.out.println(result);
}
}
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
哥们你真人才