题解 | #字符串合并处理#
字符串合并处理
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);
}
}
}
}
美的集团公司福利 747人发布
