题解 | #字符串合并处理#逻辑简单
字符串合并处理
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String input = in.nextLine();
String[] split = input.split(" ");
char[] odd = new char[(split[0].length() + split[1].length()) / 2];
char[] even = new char[(split[0].length() + split[1].length()) - odd.length];
boolean isEven = true;
int ei = 0, oi = 0;
for (int i = 0; i < split[0].length(); i++) {
if (isEven) {
even[i / 2] = split[0].charAt(i);
isEven = !isEven;
++ei;
} else {
odd[i / 2] = split[0].charAt(i);
isEven = !isEven;
++oi;
}
}
for (int i = 0; i < split[1].length(); i++) {
if (isEven) {
even[i / 2 + ei] = split[1].charAt(i);
isEven = !isEven;
} else {
odd[i / 2 + oi] = split[1].charAt(i);
isEven = !isEven;
}
}
Arrays.sort(even);
Arrays.sort(odd);
ei = oi = 0;
isEven = true;
StringBuilder builder = new StringBuilder();
for (int i = 0; i < input.length() - 1; i++) {
if (isEven) {
builder.append(convert(even[ei++]));
isEven = !isEven;
} else {
builder.append(convert(odd[oi++]));
isEven = !isEven;
}
}
System.out.println(builder);
}
private static char convert(char c) {
if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' &&
c <= 'f')) {
int i = Integer.parseInt(String.valueOf(c), 16);
String bs = new StringBuilder(Integer.toBinaryString(i)).reverse().toString();
if (bs.length() < 4) {
bs = bs + "0000".substring(bs.length());
}
int i1 = Integer.parseInt(bs, 2);
return Integer.toString(i1, 16).toUpperCase().charAt(0);
}
return c;
}
}

