直接穷举,只有16个进行转换
import java.util.*;
public class Main{
public static void main(String [] args){
getString();
}
public static void getString(){
Scanner scan = new Scanner(System.in);
while(scan.hasNext()){
String input = scan.nextLine().replace(" ", "");
int len = input.length();
int len1 = input.length()/2;
int len2 = input.length()/2;
if(len%2!=0){
len1 += 1;
}
String [] str1 = new String[len1];
String [] str2 = new String[len2];
// 分别对奇数行偶数行排序
for(int i = 0; i < len; i++){
if(i % 2 == 0){
str1[i/2] = input.substring(i, i+1);
}else{
str2[(i-1)/2] = input.substring(i, i+1);
}
}
Arrays.sort(str1);
Arrays.sort(str2);
for(int i = 0; i < len1; i++){
System.out.print(getChar(str1[i]));
if(i < len2){
System.out.print(getChar(str2[i]));
}
}
System.out.println("");
}
}
// 16进制转换
public static String getChar(String input){
String temp = input.toUpperCase();
switch(temp){
case "F" :return "F";
case "E" :return "7";
case "D" :return "B";
case "C" :return "3";
case "B" :return "D";
case "A" :return "5";
case "9" :return "9";
case "8" :return "1";
case "7" :return "E";
case "6" :return "6";
case "5" :return "A";
case "4" :return "2";
case "3" :return "C";
case "2" :return "4";
case "1" :return "8";
case "0" :return "0";
default:return input;
}
/*
1111 == 1111 F = F
1110 == 0111 E = 7
1101 == 1011 D = B
1100 == 0011 C = 3
1011 == 1101 B = D
1010 == 0101 A = 5
1001 == 1001 9 = 9
1000 == 0001 8 = 1
0111 == 1110 7 = E
0110 == 0110 6 = 6
0101 == 1010 5 = A
0100 == 0010 4 = 2
0011 == 1100 3 = C
0010 == 0100 2 = 4
0001 == 1000 1 = 8
0000 == 0000 0 = 0*/
}
}
京公网安备 11010502036488号