题解 | #字符串合并处理#逻辑简单
字符串合并处理
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); String input = in.nextLine(); String[] split = input.split(" "); char[] odd = new char[(split[0].length() + split[1].length()) / 2]; char[] even = new char[(split[0].length() + split[1].length()) - odd.length]; boolean isEven = true; int ei = 0, oi = 0; for (int i = 0; i < split[0].length(); i++) { if (isEven) { even[i / 2] = split[0].charAt(i); isEven = !isEven; ++ei; } else { odd[i / 2] = split[0].charAt(i); isEven = !isEven; ++oi; } } for (int i = 0; i < split[1].length(); i++) { if (isEven) { even[i / 2 + ei] = split[1].charAt(i); isEven = !isEven; } else { odd[i / 2 + oi] = split[1].charAt(i); isEven = !isEven; } } Arrays.sort(even); Arrays.sort(odd); ei = oi = 0; isEven = true; StringBuilder builder = new StringBuilder(); for (int i = 0; i < input.length() - 1; i++) { if (isEven) { builder.append(convert(even[ei++])); isEven = !isEven; } else { builder.append(convert(odd[oi++])); isEven = !isEven; } } System.out.println(builder); } private static char convert(char c) { if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f')) { int i = Integer.parseInt(String.valueOf(c), 16); String bs = new StringBuilder(Integer.toBinaryString(i)).reverse().toString(); if (bs.length() < 4) { bs = bs + "0000".substring(bs.length()); } int i1 = Integer.parseInt(bs, 2); return Integer.toString(i1, 16).toUpperCase().charAt(0); } return c; } }