题解 | #字符串合并处理#
字符串合并处理
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
String a = sc.next();
String b = sc.next();
String str = a + b;
ArrayList<Character> w1 = new ArrayList<>();
ArrayList<Character> w2 = new ArrayList<>();
for(int i = 0; i < str.length(); i++){
if(i % 2 ==0){
w1.add(str.charAt(i));
}else{
w2.add(str.charAt(i));
}
}
Collections.sort(w1);
Collections.sort(w2);
StringBuilder s = new StringBuilder();
int x = 0;
while(x < w1.size() || x < w2.size()){
if(x < w1.size()) s.append(w1.get(x));
if(x < w2.size()) s.append(w2.get(x));
x++;
}
str = s.toString();
StringBuilder res =new StringBuilder();
char[] word = new char[]{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
for(int i = 0; i < str.length(); i++){
char t = str.charAt(i);
if(Character.isDigit(t)){
int m = t -'0';
StringBuilder code =new StringBuilder(
String.format("%04d",Integer.parseInt(Integer.toBinaryString(m))));
res.append(word[Integer.parseInt(code.reverse().toString(),2)]);
}else if(t <= 'F' && t >= 'A'){
int m = t -'A' + 10;
StringBuilder code =new StringBuilder(Integer.toBinaryString(m));
res.append(word[Integer.parseInt(code.reverse().toString(),2)]);
}else if(t <= 'f' && t >='a'){
int m = t -'a' + 10;
StringBuilder code =new StringBuilder(Integer.toBinaryString(m));
res.append(word[Integer.parseInt(code.reverse().toString(),2)]);
}else{
res.append(t);
}
}
System.out.println(res.toString());
}
}

查看13道真题和解析