题解 | #字符串合并处理#
字符串合并处理
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); } } }