用了一种看起来很愚蠢的解法:
package huawei; import java.util.*; public class Main { static Map<String, String> map = new HashMap<>(); static { map.put("0", "0"); map.put("1", "8"); map.put("2", "4"); map.put("3", "C"); map.put("4", "2"); map.put("5", "A"); map.put("6", "6"); map.put("7", "E"); map.put("8", "1"); map.put("9", "9"); map.put("A", "5"); map.put("B", "D"); map.put("C", "3"); map.put("D", "B"); map.put("E", "7"); map.put("F", "F"); } private static String modify(String s) { if (map.containsKey(s.toUpperCase())) { return map.get(s.toUpperCase()); } return s; } public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { String a1 = in.next(); String a2 = in.next(); String a = a1 + a2; List<String> temp1 = new ArrayList<>(); // jishu List<String> temp2 = new ArrayList<>(); // oushu char[] chars = a.toCharArray(); for (int i = 0; i < chars.length; i++) { if (i % 2 != 0) { temp1.add(String.valueOf(chars[i])); } else { temp2.add(String.valueOf(chars[i])); } } temp1.sort(String::compareTo); temp2.sort(String::compareTo); String[] strings = new String[a.length()]; int j = 0; for (String s : temp2) { strings[j] = s; j += 2; } int k = 1; for (String s : temp1) { strings[k] = s; k += 2; } StringBuilder stringBuilder = new StringBuilder(); for (String string : strings) { stringBuilder.append(modify(string)); } System.out.println(stringBuilder); } } }