题解 | #字符串合并处理#
字符串合并处理
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); HashMap<Character, String> binMap = new HashMap<Character, String>(); HashMap<String, Character> hexMap = new HashMap<String, Character>(); binMap.put('0',"0000"); binMap.put('1',"1000"); binMap.put('2',"0100"); binMap.put('3',"1100"); binMap.put('4',"0010"); binMap.put('5',"1010"); binMap.put('6',"0110"); binMap.put('7',"1110"); binMap.put('8',"0001"); binMap.put('9',"1001"); binMap.put('A',"0101"); binMap.put('B',"1101"); binMap.put('C',"0011"); binMap.put('D',"1011"); binMap.put('E',"0111"); binMap.put('F',"1111"); hexMap.put("0000",'0'); hexMap.put("0001",'1'); hexMap.put("0010",'2'); hexMap.put("0011",'3'); hexMap.put("0100",'4'); hexMap.put("0101",'5'); hexMap.put("0110",'6'); hexMap.put("0111",'7'); hexMap.put("1000",'8'); hexMap.put("1001",'9'); hexMap.put("1010",'A'); hexMap.put("1011",'B'); hexMap.put("1100",'C'); hexMap.put("1101",'D'); hexMap.put("1110",'E'); hexMap.put("1111",'F'); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNext()) { // 注意 while 处理多个 case String str = in.nextLine().replaceAll(" ",""); char[] odd = new char[str.length()]; char[] even = new char[str.length()]; char[] sorted = new char[str.length()]; for(int i=0, j=0, k=0;i<str.length();i++) { if(i%2==0) { even[j]=str.charAt(i); j++; } else { odd[k]=str.charAt(i); k++; } } odd = String.valueOf(odd).replaceAll("\\u0000", "").toCharArray(); even = String.valueOf(even).replaceAll("\\u0000", "").toCharArray(); for(int i=0;i<odd.length;i++) { char temp = odd[i]; for(int j=i-1;j>=0&&odd[j]>temp;j--) { odd[j+1]=odd[j]; odd[j]=temp; } } for(int i=0;i<even.length;i++) { char temp = even[i]; for(int j=i-1;j>=0&&even[j]>temp;j--) { even[j+1]=even[j]; even[j]=temp; } } for(int i=0, j=0, k=0;i<str.length();i++) { if(i%2==0) { sorted[i]=even[j]; j++; } else { sorted[i]=odd[k]; k++; } } for(int i=0;i<str.length();i++) { Character c = Character.toUpperCase(sorted[i]); if((c>='A' && c<='F') || (c>='0' && c<='9')) { String bin = binMap.get(c); sorted[i]=hexMap.get(bin); } } System.out.println(String.valueOf(sorted)); } } }