题解 | #字符串合并处理#
字符串合并处理
http://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Scanner; public class HJ30 { public static void main(String[] args) { Scanner input=new Scanner(System.in); //第一步:字符串合并 String string=input.nextLine().replace(" ", ""); // System.out.println(string); //第二部:排序 int length=string.length(); List<String> list1=new ArrayList(); List<String> list2=new ArrayList(); String s=""; if (length%2==0) {//长度偶数 for (int i = 0; i < length; i++) { if (i%2==0) {//偶数位 list1.add(string.substring(i,i+1)); }else {//奇数位 list2.add(string.substring(i,i+1)); } } Collections.sort(list1); Collections.sort(list2); for (int i = 0; i < list1.size(); i++) { s=s+list1.get(i)+list2.get(i); } // System.out.println(s); }else {//长度奇数 for (int i = 0; i < length; i++) { if (i%2==0) {//偶数位 list1.add(string.substring(i,i+1)); }else {//奇数位 list2.add(string.substring(i,i+1)); } } Collections.sort(list1); Collections.sort(list2); for (int i = 0; i < list1.size()-1; i++) { s=s+list1.get(i)+list2.get(i); } s=s+list1.get(list1.size()-1); // System.out.println(s); } //第三步:进制转换 for (int i = 0; i < s.length(); i++) { String s0=s.substring(i,i+1); if (s0.matches("[a-fA-F0-9]")) { //16->10 int m=Integer.parseInt(s0,16); // System.out.println(m); //10->2 String out=""; for (int j = 0; m>0; j++) { out=(m%2)+out; m=m/2; } // System.out.println(out); //反转 int len=out.length(); if (len<4) { for (int j = 0; j < 4-len; j++) { out="0"+out; } } // System.out.println(out); String out_reverse=""; for (int j = 0; j <4; j++) { out_reverse=out_reverse+out.substring(3-j,4-j); } // System.out.println(out_reverse); //2->10 int sum=Integer.parseInt(out_reverse,2); // System.out.println(Integer.parseInt(out_reverse,2)); //10->16 if (sum==10) { System.out.print("A"); } if (sum==11) { System.out.print("B"); } if (sum==12) { System.out.print("C"); } if (sum==13) { System.out.print("D"); } if (sum==14) { System.out.print("E"); } if (sum==15) { System.out.print("F"); } if(sum<10) { System.out.print(sum); } } else { System.out.print(s0); } } } }