题解 | #字符串合并处理#
字符串合并处理
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
import java.awt.List;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.function.Function;
import java.util.function.IntFunction;
import java.util.stream.IntStream;
import java.util.stream.Stream;
import static java.util.Arrays.*;
import static java.util.stream.Stream.*;
public class Main {
public static void main(String[] args) throws IOException {
testTh();
}
private static void testTh() throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String str;
while ((str = bf.readLine()) != null) {
String[] s = str.split(" ");
StringBuilder sb = new StringBuilder();
sb.append(s[0]).append(s[1]);
String toString = sb.toString();
/*System.out.println("一开始::::————————————");
Stream.of(toString).forEach(System.out::println);*/
char[] chars = toString.toCharArray();
StringBuilder sb_n1 = new StringBuilder();
StringBuilder sb_n2 = new StringBuilder();
for (int i = 0; i < chars.length; i++) {
if (i % 2 == 0) {
sb_n1.append(chars[i]);
} else {
sb_n2.append(chars[i]);
}
}
sb.delete(0, sb.length());
char[] chars2 = sb_n1.toString().toCharArray();//偶数
Arrays.sort(chars2);
/*System.out.println("偶数::::————————————");
Stream.of(chars2).forEach(System.out::println);*/
String[] characters1 = new String[chars2.length];
for (int i = 0; i < chars2.length; i++) {
characters1[i] = chars2[i] + "";
}
char[] chars3 = sb_n2.toString().toCharArray();//奇数
Arrays.sort(chars3);
/* System.out.println("奇数::::————————————");
Stream.of(chars3).forEach(System.out::println);*/
String[] characters2 = new String[chars3.length];
for (int i = 0; i < chars3.length; i++) {
characters2[i] = chars3[i] + "";
}
/* System.out.println("偶数: ---------");
Stream.of(characters1).forEach(System.out::println);*/
int j = 0;
int z = 0;
StringBuilder stringBuilder_2 = new StringBuilder();
for (int i = 0; i < chars.length; i++) {
if (i % 2 == 0) {
stringBuilder_2.append(characters1[j++]);
} else {
stringBuilder_2.append(characters2[z++]);
}
/*System.out.println("i为:"+i);*/
if (i / 2 >= characters1.length && i / 2 >= characters2.length) {
break;
}
}
/*System.out.println("stringBuilder_2::::————————————");
Stream.of(stringBuilder_2.toString()).forEach(System.out::println);*/
char[] chars1 = stringBuilder_2.toString().toCharArray();
StringBuilder true_sb = new StringBuilder();
for (char c : chars1) {
if ((c >= '0' && c <= '9')) {
String s_n = c + "";
int FLAG = 0;
String toBinaryString = Integer.toBinaryString(Integer.parseInt(s_n));
StringBuilder po = new StringBuilder();
if (toBinaryString.length() < 4) {
for (int i = 0; i < 4 - toBinaryString.length(); i++) {
po.append("0");
}
}
String toString1 = po.append(toBinaryString).reverse().toString();
int i = Integer.parseInt(toString1, 2);
String i1 = "";
if (i >= 10) {
i1 = Integer.toHexString(i).toUpperCase();
FLAG = 1;
}
if (FLAG == 0) {
true_sb.append(i);
} else {
true_sb.append(i1);
}
} else if ((c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f')) {
Integer integer = Integer.valueOf(c + "", 16);
/*System.out.println("integer "+integer);*/
String binaryString = Integer.toBinaryString(integer);
/* System.out.println("binaryString "+binaryString);*/
StringBuilder stringBuilder = new StringBuilder();
String s3 = stringBuilder.append(binaryString).reverse().toString();
/*System.out.println("s3 "+s3);*/
int parseInt = Integer.parseInt(s3, 2);
/* System.out.println("parseInt "+parseInt);*/
String toHexString = Integer.toHexString(parseInt).toUpperCase();
true_sb.append(toHexString);
} else {
true_sb.append(c);
}
}
Stream.of(true_sb.toString()).forEach(System.out::println);
}
}
}