题解 | #字符串合并处理#
字符串合并处理
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.nextLine(); str = str.replace(" ", ""); char[] chars = str.toCharArray(); ArrayList<Character> list1 = new ArrayList<>(); ArrayList<Character> list2 = new ArrayList<>(); for (int i = 0; i < chars.length; i++) { if (i % 2 == 0) { list1.add(chars[i]); } else { list2.add(chars[i]); } } Collections.sort(list1); Collections.sort(list2); for (int i = 0, j = 0, k = 0; i < chars.length; i++) { if (i % 2 == 0) { chars[i] = list1.get(j++); } else { chars[i] = list2.get(k++); } } for (int i = 0; i < chars.length; i++) { String s = String.valueOf(chars[i]); if (s.matches("[0-9a-fA-F]")) { StringBuilder sb = new StringBuilder(); String s1 = Integer.toBinaryString(Integer.parseInt(s, 16)); sb.append("0000"); sb.append(s1); sb.reverse(); String substring = sb.substring(0, 4); int i1 = Integer.parseInt(substring, 2); char c1; if (i1 > 9) { c1 = (char)((int)'A' + (i1 - 10)); System.out.print(c1); } else { System.out.print(i1); } } else { System.out.print(chars[i]); } } } }