题解 | #字符串合并处理#
字符串合并处理
http://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in= new Scanner(System.in);
Solution solution = new Solution();
//Insert Your Code Here.
String s=in.nextLine();
s=s.replaceAll(" ", "");
solution.core(s);
in.close();
}
}
class Solution {
private static HashMap<Character,Character> map=new HashMap<>();
static{
map.put('0','0');map.put('1','8');map.put('2','4');map.put('3','C');
map.put('4','2');map.put('5','A');map.put('6','6');map.put('7','E');
map.put('8','1');map.put('9','9');map.put('a','5');map.put('b','D');
map.put('c','3');map.put('d','B');map.put('e','7');map.put('f','F');
map.put('A','5');map.put('B','D');
map.put('C','3');map.put('D','B');map.put('E','7');map.put('F','F');
}
public void core(String s) {
char[] str=s.toCharArray();
StringBuilder sb_even=new StringBuilder();
StringBuilder sb_odd=new StringBuilder();
for(int i=0;i<str.length;i++){
if(i%2==0)
sb_even.append(str[i]);
else
sb_odd.append(str[i]);
}
char[] even=sb_even.toString().toCharArray();
char[] odd=sb_odd.toString().toCharArray();
Arrays.sort(even);Arrays.sort(odd);
StringBuilder res=new StringBuilder();
for(int i=0;i<even.length;i++){
char a=even[i];
if(map.containsKey(a)) res.append(map.get(a));
else res.append(a);
if(i<odd.length){
char b=odd[i];
if(map.containsKey(b)) res.append(map.get(b));
else res.append(b);
}
}
System.out.println(res.toString());
}
}