用了一种看起来很愚蠢的解法:
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);
}
}
}

京公网安备 11010502036488号