import java.util.Scanner; import java.util.HashMap; import java.util.Map; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNext()) { // 注意 while 处理多个 case String k = in.next(); String t = in.next(); System.out.println(encryptStr(k,t)); } } private static String encryptStr(String key, String text) { String res = ""; Map<Character, Character> map = new HashMap<Character, Character>(); String encryptKey = key.toUpperCase() + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; for (int i = 0; i < 26; i++) { map.put((char)('A' + i), getKey(map, encryptKey, i)); } //从map中找队友的value for (int i = 0; i < text.length();i++) { char c = 'A'; //判断如果key是小写,把value转成小写 if(Character.isLowerCase(text.charAt(i))){ c = (char)(map.get(text.toUpperCase().charAt(i))+32); }else{ c = map.get(text.toUpperCase().charAt(i)); } res = res + c; } return res; } //如果前面已经有重复的key,取下一个字符 private static char getKey(Map map, String str, int i) { if (!map.containsValue(str.toUpperCase().charAt(i))) { return str.charAt(i); } else { return getKey(map, str, i + 1); } } }