字符串合并处理
字符串合并处理
http://www.nowcoder.com/questionTerminal/d3d8e23870584782b3dd48f26cb39c8f
import java.util.*; import java.io.*; public class Main{ public static void ProcessingString(){ //直接储存十六进制反转对换表,此处不可缺少大写字母的对照biao Map<Character,Character> map=new HashMap<Character,Character>(); 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'); Scanner sc=new Scanner(System.in); while(sc.hasNext()){ String s1=sc.next(); String s2=sc.next(); char[] ch=(s1+s2).toCharArray(); //两个字符串合并成一个字符串,并将其转换为字符数组 //取出奇偶索引字符 char[] ch1=new char[ch.length/2]; //存放偶数位 char[] ch2=new char[ch.length-ch1.length]; //存放奇数位 for(int i=0,j=0,k=0;i<ch.length;i++){ //奇数 if((i+1)%2!=0){ ch2[j]=ch[i]; j++; } else{ //偶数 ch1[k]=ch[i]; k++; } } //奇偶已存好,下面开始排序 Arrays.sort(ch1); Arrays.sort(ch2); //转换 for(int i=0,j=0,k=0;i<ch.length;i++){ //奇数字符 if((i+1)%2!=0){ ch[i]=map.getOrDefault(ch2[j],ch2[j]); //使用getOrDefault方法返回到指定键所映射的值 j++; } else{ //偶数字符 ch[i]=map.getOrDefault(ch1[k],ch1[k]); k++; } } String s=new String(ch); System.out.println(s); } } public static void main(String[] args){ ProcessingString(); } }