import java.util.Arrays;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//第一步:将输入的两个字符串str1和str2进行前后合并。
String str1 = sc.next();
String str2 = sc.next();
char[] chars = (str1+str2).toCharArray();
/* System.out.println(chars);*/
//第二步:对合并后的字符串进行排序,
//偶数组:
char[] evenNum = new char[chars.length];
//奇数组:
char[] oddNum = new char[chars.length];
for (int i = 0; i < chars.length; i++) {
if(i%2==0){//偶数下标
evenNum[i]=chars[i];
}else {//奇数下标
oddNum[i]=chars[i];
}
}
Arrays.sort(evenNum);
Arrays.sort(oddNum);
//因为长度较大,所以会把空值排在前面。变成“空 空 空...数值 数值 数值”
/*System.out.println(evenNum);System.out.println(oddNum);*/
//排除空值(注意不是空格,需要用'\u0000'表示空值。char类型没有设置值时的默认值'\u0000'),找到第一个是数值的位置。
int non_null_evenNum = 0;
int non_null_oddNum = 0;
for (int i = 0; i < evenNum.length; i++) {
if (evenNum[i]!='\u0000'){
non_null_evenNum = i;
break;
}
}
for (int i = 0; i < oddNum.length; i++) {
if (oddNum[i]!='\u0000'){
non_null_oddNum = i;
break;
}
}
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < chars.length; i++) {
if(i%2==0){//偶数下标
stringBuffer.append(evenNum[non_null_evenNum]);
non_null_evenNum++;
}else {//奇数下标
stringBuffer.append(oddNum[non_null_oddNum]);
non_null_oddNum++;
}
}
/*System.out.println(chars);*/
//第三步:对排序后的字符串中的'0'~'9'、'A'~'F'和'a'~'f'字符,需要进行转换操作。
for (int i = 0; i < chars.length; i++) {
String str = stringBuffer.substring(i,i+1);
if(str.matches("[0-9a-fA-F]")){
/*Integer.toBinaryString(Integer.parseInt(str,16)
* 16进制恢复成10进制,然后转换成2进制。*/
StringBuffer binary = new StringBuffer(Integer.toBinaryString(Integer.parseInt(str,16)));
int len = binary.length();
for (int j = 0; j < 4-len; j++) {//补零(不是89abcdef的数不够4位,需要补零。然后才能翻转。)
binary.insert(0,"0");
}
binary = binary.reverse();//翻转。
int n = Integer.parseInt(binary.toString(),2);//把二进制转换成十进制
String hexString = Integer.toHexString(n).toUpperCase();//转换成16进制字符串大写
stringBuffer.replace(i,i+1,hexString);//替换。在原位置进行替换。
}
}
System.out.println(stringBuffer);
}
}
https://www.coder.work/article/5500735

京公网安备 11010502036488号