题解 | #字符串合并处理#
字符串合并处理
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); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNext()) { // 注意 while 处理多个 case String first = in.next(); String second = in.next(); first += second; //奇数和偶数 int len = first.length(); int odd = len / 2; int even = 0; if (len % 2 == 0) { even = odd; } else { even = odd + 1; } //奇数组 char[] oddArr = new char[odd]; //偶数组 char[] evenArr = new char[even]; char[] res = first.toCharArray(); int o = 0; int e = 0; for (int i = 0; i < len; i++) { //偶数下标 if (i % 2 == 0) { evenArr[e] = res[i]; e++; } else { //奇数下标 oddArr[o] = res[i]; o++; } } //奇偶数组排序 Arrays.sort(oddArr); Arrays.sort(evenArr); o = 0; e = 0; //结果重组 for (int i = 0; i < len; i++) { //偶数下标 if (i % 2 == 0) { res[i] = evenArr[e]; e++; } else { //奇数下标 res[i] = oddArr[o]; o++; } // System.out.print(res[i]); } // System.out.println(); //第三步排序:全转二进制后反转,F f不变 for (int i = 0; i < len; i++) { char ch = res[i]; String str = Character.toString(ch); String s = ""; //数字 if (Character.isDigit(ch)) { //转二进制 s = Integer.toBinaryString(Integer.parseInt(str)); } //字母 if (ch == 'a' || ch == 'b' || ch == 'c' || ch == 'd' || ch == 'e' || ch == 'f' || ch == 'A' || ch == 'B' || ch == 'C' || ch == 'D' || ch == 'E' || ch == 'F') { //转十进制再转二进制 s = Integer.toBinaryString(Integer.parseInt(str.substring(0, 1), 16)); } if (s.length() != 0) { //高位补0 int length = s.length(); if (length < 4) { for (int k = 0; k < 4 - length; k++) { s = "0" + s; } } //反转 StringBuilder sb = new StringBuilder(s); s = sb.reverse().toString(); //二进制转10进制 int num = Integer.parseInt(s.substring(0, s.length()), 2); if (num <= 9) { //保持不变 ch = String.valueOf(num).charAt(0); } else if (num == 10) { ch = 'A'; } else if (num == 11) { ch = 'B'; } else if (num == 12) { ch = 'C'; } else if (num == 13) { ch = 'D'; } else if (num == 14) { ch = 'E'; } else if (num == 15) { ch = 'F'; } res[i] = ch; } System.out.print(ch); } } } }
太好了,终于过了九九八十一难了