在一行上输入两个长度
,由大小写字母和数字构成的字符串
和
,代表待处理的字符串。
输出处理后的最终字符串。
dec fab
5D37BF
在这个样例中,全过程描述如下:
【合并阶段】
第一步合并得到
;
第二步排序得到
。
【调整阶段】
对于第一个字符
,其十进制数为
,二进制数为
,翻转后得到
,再转换回十六进制数为
;
第二个字符
,翻转
;
第三个字符
,翻转
;
第四个字符
,翻转
;
第五个字符
,翻转
;
第六个字符
,翻转
。
abV CDw
B3VD5w
在这个样例中,全过程描述如下:
【合并阶段】
第一步合并得到
;
第二步排序得到
。
【调整阶段】
对于第一个字符
,其十进制数为
,二进制数为
,翻转后得到
;
第二个字符
,翻转
;
第三个字符
,跳过该字符;
第四个字符
,翻转
;
第五个字符
,翻转
;
第六个字符
,跳过该字符。
123 15
88C4A
在这个样例中,全过程描述如下:
【合并阶段】
第一步合并得到
;
第二步排序得到
。
【调整阶段】
对于第一、二个字符
,其十进制数为
,二进制数为
,翻转后得到
,再转换回十六进制数为
;
第三个字符
,翻转
;
第四个字符
,翻转
;
第五个字符
,翻转
。
本题已于下方时间节点更新,请注意题解时效性:
1. 2025-05-15 更新题面。
2. 2024-12-14 更新题面。
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine().replace(" ", "");
char[] carr = str.toCharArray();
for (int i = 0; i < carr.length; i += 2) {
boolean isSorted = false;
for (int j = 0; j < carr.length - 1 - i; j += 2) {
if (j + 2 >= carr.length) break;
if (carr[j] > carr[j + 2]) {
char tmp = carr[j];
carr[j] = carr[j + 2];
carr[j + 2] = tmp;
isSorted = true;
}
}
if (!isSorted) break;
}
for (int i = 1; i < carr.length; i += 2) {
boolean isSorted = false;
for (int j = 1; j < carr.length - 1 - i; j += 2) {
if (j + 2 >= carr.length) break;
if (carr[j] > carr[j + 2]) {
char tmp = carr[j];
carr[j] = carr[j + 2];
carr[j + 2] = tmp;
isSorted = true;
}
}
if (!isSorted) break;
}
for (int i = 0; i < carr.length; i++) {
char c = carr[i];
if (c >= '0' && c <= '9') {
carr[i] = opNum(c - '0');
} else if (c >= 'a' && c <= 'f') {
carr[i] = opNum(c - 'a' + 10);
} else if (c >= 'A' && c <= 'F') {
carr[i] = opNum(c - 'A' + 10);
}
}
System.out.println(new String(carr));
}
public static char opNum(int num) {
int sum = 0;
for (int i = 0; i < 4; i++) {
int x = num % 2;
num /= 2;
sum += x * (int)Math.pow(2, 3-i);
}
return (char) (sum < 10 ? '0' + sum : 'A' + sum - 10);
}
} 操作步骤能简化, 10进制转2进制时, 计算出的数字正好是逆序, 直接按这个顺序再2进制转16进制就行了import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.next();
String t = in.next();
String u = s + t;
StringBuilder qiU = new StringBuilder();
StringBuilder ouU = new StringBuilder();
for (int i = 0; i < u.length(); i += 2) {
qiU.append(u.charAt(i));
}
for (int i = 1; i < u.length(); i += 2) {
ouU.append(u.charAt(i));
}
char[] qiUs = new String(qiU).toCharArray();
char[] ouUs = new String(ouU).toCharArray();
Arrays.sort(qiUs);
Arrays.sort(ouUs);
StringBuilder u1 = new StringBuilder();
for (int i = 0; i < ouUs.length; i++) {
u1.append(qiUs[i]).append(ouUs[i]);
}
if ((qiUs.length > ouUs.length)) {
u1.append(qiUs[qiUs.length - 1]);
}
StringBuilder res = new StringBuilder();
for (int i = 0; i < u1.length(); i++) {
String temp = u1.substring(i, i + 1);
if (temp.matches("[0-9a-fA-F]")) {
StringBuilder bianaryStr = new StringBuilder(Integer.toBinaryString(
Integer.parseInt(temp, 16)));
int len = bianaryStr.length();
for (int j = 0; j < 4 - len; j++) {
bianaryStr.insert(0, "0");
}
bianaryStr = bianaryStr.reverse();
int ten = Integer.parseInt(bianaryStr.toString(), 2);
String hex = Integer.toHexString(ten).toUpperCase();
res.append(hex);
}else{
res.append(temp);
}
}
System.out.println(res);
}
} import java.util.*;
import java.math.*;
// 注意类名必须为 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 a = in.next();
String b = in.next();
String str = a + b;
String aa = sort(str);
StringBuilder bd = new StringBuilder();
for (int i = 0; i < aa.length() ; i++) {
bd.append(changeJZ(aa.charAt(i)));
}
System.out.println(bd.toString());
}
}
public static String sort(String s) {
char[] js = new char[(s.length() + 1) / 2];
char[] os = new char[s.length() / 2];
int jn = 0, on = 0;
for (int i = 0; i < s.length(); i ++) {
if (i % 2 == 0) {
js[jn] = s.charAt(i);
jn++;
} else {
os[on] = s.charAt(i);
on++;
}
}
Arrays.sort(js);
Arrays.sort(os);
StringBuilder bd = new StringBuilder();
for (int i = 0; i < js.length ; i++) {
bd.append(js[i]);
if (i < os.length ) {
bd.append(os[i]);
}
}
return bd.toString();
}
public static String changeJZ(char ch) {
if ((ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'f') || (ch >= 'A' &&
ch <= 'F')) {
BigInteger b1 = new BigInteger(String.valueOf(ch), 16);
String s1 = b1.toString(2);
if(s1.length()< 4){
s1 = insertZero(s1);
}
StringBuilder bd = new StringBuilder();
for (int i = s1.length() - 1; i >= 0; i--) {
bd.append(s1.charAt(i));
}
BigInteger b2 = new BigInteger(bd.toString(), 2);
String ss = b2.toString(16);
return ss.toUpperCase();
} else {
return String.valueOf(ch);
}
}
//补零,1,2,3这样的长度不够4位
public static String insertZero(String s) {
int n = 4 - s.length();
StringBuilder bd = new StringBuilder();
for (int i = 0; i < n; i++) {
bd.append("0");
}
bd.append(s);
return bd.toString();
}
} import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
//16转10的map映射
private static Map<Character, Integer> map16_10 = new
HashMap<Character, Integer>() {
{
put('A', 10);
put('B', 11);
put('C', 12);
put('D', 13);
put('E', 14);
put('F', 15);
put('a', 10);
put('b', 11);
put('c', 12);
put('d', 13);
put('e', 14);
put('f', 15);
}
};
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) { // 注意 while 处理多个 case
String a = in.nextLine();//输入字符串
a = a.replace(" ", ""); //将字符串中的空格去除
char[] arrA = a.toCharArray();//转为char数组
int n = arrA.length;
//分别放入单数List和双数List,然后进行排序
List<Character> oddList = new ArrayList<>();
List<Character> evenList = new ArrayList<>();
for (int i = 1; i <= n ; i++) {
if (i % 2 == 0) {
evenList.add(arrA[i - 1]);
} else {
oddList.add(arrA[i - 1]);
}
}
//分别进行排序
oddList.sort(Comparator.naturalOrder());
evenList.sort(Comparator.naturalOrder());
//将排序后的字符串取出
StringBuilder sb = new StringBuilder();
int odd = 0;
int even = 0;
for (int i = 1; i <= n ; i++) {
if (i % 2 == 0) {
sb.append(evenList.get(even));
even++;
} else {
sb.append(oddList.get(even));
odd++;
}
}
StringBuilder result = new StringBuilder();
//进行转换
for (char c : sb.toString().toCharArray()) {
char temp = c;
//先判断是不是合法的16进制字符,合法则转换,不合法则直接追加
if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' &&
c <= 'f')) {
temp = change(c);
}
result.append(temp);//追加c到结果
}
//输出结果
System.out.println(result.toString() );
}
}
//转换
private static char change(char c) {
//1、十六进制转换为十进制
int n ;
if (Character.isDigit(c)) {
n = Character.getNumericValue(c);//如果是数字,则直接转换为数字
} else {
n = map16_10.get(c) ; //非数字则通过map映射获取值
}
//2、将十进制转换为二进制
String binary = Integer.toBinaryString(n);
while (binary.length() % 4 != 0) { //不足4位的需要补0
binary = "0" + binary;
}
//3、将二进制进行翻转
StringBuilder sb = new StringBuilder();
//先翻转字符串
for (int i = binary.length() - 1 ; i >= 0; i--) {
sb.append(binary.toCharArray()[i]);
}
//4、将二进制转换为十六进制:先转十进制,再将十进制转为十六进制
//将翻转后的字符串转为十进制的int类型
int reverse = Integer.parseInt(sb.toString(), 2);
//将十进制再转为十六进制,并转为大写
String hex = Integer.toHexString(reverse).toUpperCase();
char[] arr = hex.toCharArray();//直接输出
if (arr.length == 1) {
return arr[0];//一般只有一位,直接输出一位
}
return c;//兜底输出
}
} import java.util.Scanner; import java.util.Arrays; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { String str = scanner.next() + scanner.next(); int oddsLength = str.length() / 2; int evensLength = str.length() % 2 == 0 ? str.length() / 2 : str.length() / 2 + 1; char[] odds = new char[oddsLength]; char[] evens = new char[evensLength]; int i1 = 0, i2 = 0; for (int i = 0; i < str.length(); i++) { if (i % 2 == 0) { evens[i1++] = str.charAt(i); } else { odds[i2++] = str.charAt(i); } } Arrays.sort(odds); Arrays.sort(evens); StringBuffer buffer = new StringBuffer(); i1=0;i2=0; for (int i = 0; i < str.length(); i++) { if (i % 2 == 0) { buffer.append(evens[i1++]); } else { buffer.append(odds[i2++]); } } StringBuffer result = new StringBuffer(); for(int i = 0; i<buffer.length(); i++) { int t=-1; char c = buffer.charAt(i); if (c >='0' && c <='9'){ t = c-'0'; }else if (c >='A' && c <='F'){ t = c-'A'+10; }else if (c >='a' && c <='f'){ t = c-'a'+10; } if (t!=-1){ String s = Integer.toBinaryString(t); while (s.length()<4){ s = '0'+s; } s = new StringBuffer(s).reverse().toString(); result.append(Integer.toHexString(Integer.parseInt(s, 2)).toUpperCase()); }else{ result.append(buffer.charAt(i)); } } System.out.println(result.toString()); } } }
import java.util.Scanner;
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextLine()) {
String line = sc.nextLine();
String[] arr = line.split(" ");
String str = arr[0] + arr[1];
List<Character> o = new ArrayList<>();
List<Character> j = new ArrayList<>();
for (int i = 0; i < str.length(); i++) {
if (i % 2 == 0) {
o.add(str.charAt(i));
} else {
j.add(str.charAt(i));
}
}
Collections.sort(o);
Collections.sort(j);
Queue<Character> oq = new ArrayDeque<>(o);
Queue<Character> jq = new ArrayDeque<>(j);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
if (i % 2 == 0) {
sb.append(oq.poll());
} else {
sb.append(jq.poll());
}
}
str = sb.toString();
StringBuilder result = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
if (Character.toUpperCase(str.charAt(i)) > 'F' && Character.toUpperCase(str.charAt(i)) <= 'Z') {
result.append(str.charAt(i));
continue;
}
String tmp = hex2bin(str.charAt(i) + "");
String hex = bin2hex(new StringBuilder(tmp).reverse().toString());
result.append(hex.toUpperCase());
}
System.out.println(result);
}
}
private static String hex2bin(String hex) {
int tmp = Integer.parseInt(hex, 16);
return String.format(Locale.ENGLISH, "%04d", Integer.parseInt(Integer.toBinaryString(tmp)));
}
private static String bin2hex(String bin) {
int tmp = Integer.parseInt(bin, 2);
return Integer.toHexString(tmp);
}
} import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
while ((str = br.readLine()) != null) {
str = str.replace(" ", "");
char[] chs = sort(str);
System.out.println(transform(chs));
}
}
private static char[] sort(String s) {
char[] chs = s.toCharArray();
doSort(chs, 2);
doSort(chs, 3);
return chs;
}
// 插入排序
private static void doSort(char[] chs, int start) {
int n = chs.length;
int lower = start - 2;
for (int i = start, j = 0; i < n; i += 2) {
if (chs[i] < chs[i - 2]) {
char tmp = chs[i];
for (j = i; j > lower && chs[j - 2] > tmp; j -= 2) {
chs[j] = chs[j - 2];
}
chs[j] = tmp;
}
}
}
private static String transform(char[] chs) {
for (int i = 0; i < chs.length; i++) {
char ch = chs[i];
int num = -1;
if (ch >= '0' && ch <= '9') {
num = ch - '0';
} else if (ch >= 'a' && ch <= 'f') {
num = ch - 'a' + 10;
} else if (ch >= 'A' && ch <= 'F') {
num = ch - 'A' + 10;
}
if (num == -1) {
continue;
}
num = ((num & 1) << 3) | ((num & 2) << 1) | ((num & 4) >> 1) | ((num & 8) >> 3);
chs[i] = (char) (num < 10 ? num + '0' : num - 10 + 'A');
}
return new String(chs);
}
} import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) { // 注意 while 处理多个 case
String inString = in.nextLine();
String[] split = inString.split(" ");
String s = split[0] + split[1];
ArrayList<Character> jiArr = new ArrayList<>();
ArrayList<Character> ouArr = new ArrayList<>();
for (int i = 0; i < s.length(); i++) {
if (i % 2 == 0) {
ouArr.add(s.charAt(i));
} else {
jiArr.add(s.charAt(i));
}
}
//排序
Collections.sort(jiArr, ((o1, o2) -> o1.compareTo(o2)));
Collections.sort(ouArr, ((o1, o2) -> o1.compareTo(o2)));
String convert = "";
for (int i = 0; i < ouArr.size(); i++) {
convert = convert + ouArr.get(i);
if (jiArr.size()-1 >= i ) {
convert = convert + jiArr.get(i);
}
}
//初始化16进制字典, 有些字典将所有的数据都初始化了,我觉得是真离谱,当你看完题目能脑测把所有字典初始化?
Map<Integer, String> map = new HashMap<>();
map.put(10, "A");
map.put(11, "B");
map.put(12, "C");
map.put(13, "D");
map.put(14, "E");
map.put(15, "F");
Map<String, Integer> map2 = new HashMap<>();
map2.put("A", 10);
map2.put("B", 11);
map2.put("C", 12);
map2.put("D", 13);
map2.put("E", 14);
map2.put("F", 15);
StringBuffer res = new StringBuffer();
for (int i = 0; i < convert.length(); i++) {
char c = convert.charAt(i);
if (c >= '0' && c <= '9') {
String s1 = c + "";
int num = Integer.parseInt(s1);
Integer anInt = convert(num, map, res);
if (anInt == null) continue;
res.append(anInt);
} else if ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')) {
String upperCase = (c + "").toUpperCase();
Integer integer = map2.get(upperCase);
Integer anInt = convert(integer, map, res);
if (anInt == null) continue;
res.append(anInt);
} else {
res.append(c);
}
}
System.out.println(res);
}
}
private static Integer convert(Integer integer, Map<Integer, String> map, StringBuffer res) {
int anInt = 0;
int length = Integer.toBinaryString(integer).length();
String string = "";
//二进制字符补位 坑点一
if (length < 4) {
int j = 4 - length;
for (int i1 = 0; i1 < j; i1++) {
string += "0";
}
}
StringBuffer stringBuffer = new StringBuffer(string + Integer.toBinaryString(integer));
anInt = Integer.parseInt(stringBuffer.reverse().toString(), 2);
//转换后的二进制数转换成16进制
if (anInt > 9) {
String s2 = map.get(anInt);
res.append(s2);
return null;
}
return anInt;
}
} import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine().replace(" ", "");
List<Character> s1 = new ArrayList();
List<Character> s2 = new ArrayList();
for(int i = 0; i < str.length(); i++){
if(i % 2 == 0) s1.add(str.charAt(i));
else s2.add(str.charAt(i));
}
Collections.sort(s1);
Collections.sort(s2);
List<Character> list = new ArrayList();
int i = 0;
for(int j = 0; i < s1.size() && j < s2.size(); i++,j++){
list.add(s1.get(i));
list.add(s2.get(j));
}
if(i < s1.size()) list.add(s1.get(s1.size()-1));
for(i = 0; i < list.size(); i++){
char c = list.get(i);
if(!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'))){
System.out.print(c);
continue;
}
Integer n = Integer.parseInt(c+"", 16);
String b = Integer.toBinaryString(n);
StringBuilder sb = new StringBuilder("000".substring(b.length() - 1)+b);
sb.reverse();
System.out.print(Integer.toString(Integer.parseInt(sb.toString(), 2), 16).toUpperCase());
}
}
} import java.util.*;
public class Main {
public Character TransformChar(Character c) {
if (!String.valueOf(c).matches("[1-9a-fA-F]")) {
return c;
}
if (c == '0') {
return '0';
}
int sixthNum = Integer.parseInt(String.valueOf(c), 16);
String binNum = Integer.toBinaryString(sixthNum);
while (binNum.length() < 4) {
binNum = "0" + binNum;
}
String revStr = new StringBuilder(binNum).reverse().toString();
int num = Integer.parseInt(revStr.substring(revStr.indexOf("1")), 2);
String resutNum = Integer.toHexString(num);
return resutNum.matches("[a-f]") ? resutNum.toUpperCase().charAt( 0) : resutNum.charAt(0);
}
public String transformStr(String str) {
String replace = str.replace(" ", "");
char[] chars = replace.toCharArray();
ArrayList<Character> singleArr = new ArrayList<>();
ArrayList<Character> doubleArr = new ArrayList<>();
for (int i = 0; i < chars.length; i++) {
if (i % 2 != 0) {
singleArr.add(chars[i]);
} else {
doubleArr.add(chars[i]);
}
}
Collections.sort(singleArr);
Collections.sort(doubleArr);
Iterator<Character> iterator1 = singleArr.iterator();
Iterator<Character> iterator2 = doubleArr.iterator();
for (int i = 0; i < singleArr.size(); i++) {
Character next = iterator1.next();
Character ch = new Main().TransformChar(next);
singleArr.set(i, ch);
}
for (int i = 0; i < doubleArr.size(); i++) {
Character next = iterator2.next();
Character ch = new Main().TransformChar(next);
doubleArr.set(i, ch);
}
Iterator<Character> newIterator1 = singleArr.iterator();
Iterator<Character> newIterator2 = doubleArr.iterator();
for (int i = 0; i < chars.length; i++) {
if (i % 2 != 0) {
chars[i] = newIterator1.next();
} else {
chars[i] = newIterator2.next();
}
}
return new String(chars);
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
System.out.print(new Main().transformStr(str));
}
} import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String arr[]=in.nextLine().split(" ");
String s=arr[0]+arr[1];
String []str=new String[s.length()];
for(int i = 0;i<s.length();i++){
str[i] = String.valueOf(s.charAt(i));
}
for(int i=0;i<str.length-2;i+=2){
for(int j=i+2;j<str.length;j+=2){
if(str[i].charAt(0)>str[j].charAt(0)) {
String temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
}
for(int i=1;i<str.length-2;i+=2){
for(int j=i+2;j<str.length;j+=2){
if(str[i].charAt(0)>str[j].charAt(0)) {
String temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
}
for(int i = 0;i<str.length;i++){
if(str[i].charAt(0)=='1'){
System.out.print("8");
}else if(str[i].charAt(0)=='2') {
System.out.print("4");
}else if(str[i].charAt(0)=='3') {
System.out.print("C");
}else if(str[i].charAt(0)=='4') {
System.out.print("2");
}else if(str[i].charAt(0)=='5') {
System.out.print("A");
}else if(str[i].charAt(0)=='6') {
System.out.print("6");
}else if(str[i].charAt(0)=='7') {
System.out.print("E");
}else if(str[i].charAt(0)=='8') {
System.out.print("1");
}else if(str[i].charAt(0)=='A'||str[i].charAt(0)=='a') {
System.out.print("5");
}else if(str[i].charAt(0)=='B'||str[i].charAt(0)=='b') {
System.out.print("D");
}else if(str[i].charAt(0)=='C'||str[i].charAt(0)=='c') {
System.out.print("3");
}else if(str[i].charAt(0)=='D'||str[i].charAt(0)=='d') {
System.out.print("B");
}else if(str[i].charAt(0)=='E'||str[i].charAt(0)=='e') {
System.out.print("7");
}else if(str[i].charAt(0)=='F'||str[i].charAt(0)=='f') {
System.out.print("F");
}else {
System.out.print(str[i]);
}
}
}
} import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) { // 注意 while 处理多个 case
String a = in.nextLine().replaceAll(" ", "");
// System.out.println(getMix(a));
// System.out.println((int)'0');
String str = getMix(a);
// System.out.println(str);
char[] charArr = str.toCharArray();
int n = charArr.length;
for (int i = 0; i < n; i++) {
charArr[i] = changeChar(charArr[i]);
}
String str2 = new String(charArr);
System.out.println(str2);
}
}
public static char changeChar(char input) {
String tempStr = null;
if (input >= '0' && input <= '9') {
tempStr = Integer.toBinaryString(input - '0');
} else if (input >= 'A' && input <= 'F') {
tempStr = Integer.toBinaryString(input - '7');
} else if (input >= 'a' && input <= 'f') {
tempStr = Integer.toBinaryString(input - 'W');
} else {
return input;
}
// System.out.println(tempStr);
while (tempStr.length() < 4) {
tempStr = "0" + tempStr;
}
char[] tempCharArr = tempStr.toCharArray();
//反向遍历
int sum = 0;
for (int i = 3; i > -1; i--) {
sum += (tempCharArr[i] - '0') * Math.pow(2, i);
}
if (sum >= 0 && sum <= 9) {
return (char)(sum + 48);
} else {
return (char)(sum + 55);
}
}
public static String getMix(String input1) {
char[] input2 = input1.toCharArray();
char[] ouShu = new char[input2.length / 2 + input2.length % 2];
char[] jiShu = new char[input2.length / 2];
for (int i = 0; i < input2.length; i++) {
if (i % 2 == 0) {
ouShu[i / 2] = input2[i];
} else {
jiShu[(i - 1) / 2] = input2[i];
}
}
Arrays.sort(ouShu);
Arrays.sort(jiShu);
for (int i = 0; i < input2.length; i++) {
if (i % 2 == 0) {
input2[i] = ouShu[i / 2];
} else {
input2[i] = jiShu[(i - 1) / 2];
}
}
return (new String(input2));
}
} import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 记录对照表,十六进制数量有限,用对照表的方式比用代码更方便,注意key值可能有大小写,value值都是大写
Map<Character, Character> tr = new HashMap<Character, Character>();
tr.put('0', '0');
tr.put('1', '8');
tr.put('2', '4');
tr.put('3', 'C');
tr.put('4', '2');
tr.put('5', 'A');
tr.put('6', '6');
tr.put('7', 'E');
tr.put('8', '1');
tr.put('9', '9');
tr.put('a', '5');
tr.put('b', 'D');
tr.put('c', '3');
tr.put('d', 'B');
tr.put('e', '7');
tr.put('f', 'F');
tr.put('A', '5');
tr.put('B', 'D');
tr.put('C', '3');
tr.put('D', 'B');
tr.put('E', '7');
tr.put('F', 'F');
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
String a = in.nextLine();
int i = 0, length = a.length();
List<Character> a1 = new ArrayList<>();
List<Character> a2 = new ArrayList<>();
// 记录奇数、偶数位置的字符串
for (char c : a.toCharArray()) {
// 就一个空格,记录时顺手去掉
if (c == ' ') {
continue;
}
if (i % 2 == 0) {
a1.add(c);
} else {
a2.add(c);
}
i++;
}
// 分别排序
a1.sort(new Comparator<Character>() {
public int compare(Character c1, Character c2) {
return c1 - c2;
}
});
a2.sort(new Comparator<Character>() {
public int compare(Character c1, Character c2) {
return c1 - c2;
}
});
// 按照十六进制替换表替换
StringBuilder sb = new StringBuilder();
length = a1.size() + a2.size();
for (i = 0; i < length ; i++) {
char c;
if (i % 2 == 0) {
c = a1.get(i / 2);
} else {
c = a2.get(i / 2);
}
if (('0' <= c && c <= '9') || ('a' <= c && c <= 'f') || ('A' <= c && c <= 'F')) {
c = tr.get(c);
}
sb.append(c);
}
System.out.println(sb.toString());
}
}
}