题解 | #字符串合并处理#
字符串合并处理
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
String a = in.next();
String b = in.next();
convert(a + b);
}
}
//dec fab
private static void convert(String str) {
char[] arr = str.toCharArray();
String a = "";
String b = "";
int i = 0;
for (char c : arr) {
if (i%2 == 0) {
a += c;
} else {
b += c;
}
i++;
}
String r = "";
Iterator<Character> ita = sort(a);
Iterator<Character> itb = sort(b);
while (ita.hasNext()) {
r += ita.next();
if (itb.hasNext())
r += itb.next();
}
String rr = "";
for (int k = 0; k < r.length(); k++) {
char kchar = r.charAt(k);
if ("0123456789ABCDEFabcdef".indexOf(kchar) >= 0) {
rr += two(kchar).toUpperCase();
} else {
rr += kchar;
}
}
System.out.println(rr);
}
private static Iterator<Character> sort(String a) {
List list = Arrays.asList(a.split(""));
Collections.sort(list);
return list.iterator();
}
private static String two(char a) {
String numstr = a + "";
String r = Integer.toBinaryString(Integer.parseInt(numstr, 16));//转二进制
StringBuffer s = new StringBuffer(String.format("%4s", r).replace(' ', '0'));
s = s.reverse();
int ten = Integer.parseInt(s.toString(), 2);//10
return Integer.toHexString(ten);
}
}
查看6道真题和解析
