题分享一个直观的java题解。| #字符串合并处理#
按照题目要求一步一步来就好了。
import java.util.Scanner;
public class Main{
public static void main(String[] args){
// 合并字符串并转换成字符数组,方便操作
Scanner in = new Scanner(System.in);
String a = in.next();
String b = in.next();
char[] arr = (a+b).toCharArray();
// 排序 可以分别排序。将增量改为2,就自动偶和偶的排序、奇和奇的排序了。
// 选择排序 偶下标排序
for(int i=0; i<arr.length; i=i+2){
int minIndex = i;
for(int j=i; j<arr.length; j=j+2){
if(arr[minIndex]> arr[j]){
minIndex = j;
}
}
swap(arr, minIndex, i);
}
// 选择排序 奇下标排序
for(int i=1; i<arr.length; i=i+2){
int minIndex = i;
for(int j=i; j<arr.length; j=j+2){
if(arr[minIndex]> arr[j]){
minIndex = j;
}
}
swap(arr, minIndex, i);
}
// 构建映射表
char[] charArr = new char[16];
charArr[0] = '0';
charArr[1] = '8';
charArr[2] = '4';
charArr[3] = 'C';
charArr[4] = '2';
charArr[5] = 'A';
charArr[6] = '6';
charArr[7] = 'E';
charArr[8] = '1';
charArr[9] = '9';
charArr[10] = '5';
charArr[11] = 'D';
charArr[12] = '3';
charArr[13] = 'B';
charArr[14] = '7';
charArr[15] = 'F';
// 转换成对应字符。需要注意的是只有0~9 A~Z a~z需要转换
for(int i=0; i<arr.length; i++){
if(arr[i] <= '9'){
arr[i] = charArr[arr[i] - '0'];
}else if(arr[i]<='F' && arr[i]>='A'){
arr[i] = charArr[arr[i] - 'A' + 10];
}else if(arr[i]<='f' && arr[i]>='a'){
arr[i] = charArr[arr[i] - 'a' + 10];
}
}
System.out.println(new String(arr));
}
private static void swap(char[] arr, int i, int j){
char tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}