描述 | |
---|---|
知识点 | 字符串,排序,位运算 |
运行时间限制 | 10M |
内存限制 | 128 |
输入 | 输入两个字符串 |
输出 | 输出转化后的结果 |
样例输入 | dec fab |
样例输出 | 5D37BF |
方法一:
String ss=sb.append(Integer.toBinaryString(Integer.valueOf("b", 16))).reverse().toString();
System.out.println(Integer.toHexString(Integer.valueOf(ss, 2)));
方法二:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s1=sc.next();
String s2=sc.next();
//合并排序
String s=combine(s1,s2);
//转换
System.out.println(s);;
}
private static String combine(String s1,String s2){
String s=s1+s2;
char[]ch=s.toCharArray();
sort(ch,0);sort(ch,1); s=new String(ch);
for(int i=0;i<s.length();i++){
ch[i]=convert(s.charAt(i));
}
return new String(ch);
}
private static void sort(char[] chars, int beg) {
for (int i = beg; i < chars.length; i += 2) {
int idx = i;
char tmp;
for (int j = i + 2; j < chars.length; j += 2) {
if (chars[idx] > chars[j]) {
idx = j;
}
}
tmp = chars[i];
chars[i] = chars[idx];
chars[idx] = tmp;
}
}
//转换,枚举法
private static char convert(char c){
char[] mask = {'0', '8', '4', 'C', '2', 'A', '6', 'E', '1', '9', '5', 'D', '3', 'B', '7', 'F'};
if ( c >= '0' && c <= '9') {
return mask[c - '0'];
} else if (c >= 'a' && c <= 'f') {
return mask[c - 'a' + 10];
} else if (c >= 'A' && c <= 'F') {
return mask[c - 'A' + 10];
}
return c;
}
}