题分享一个直观的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; } }