题解 | #字符串合并处理#

字符串合并处理

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);
			}
			
		}
		
	}

}
全部评论

相关推荐

03-25 19:00
东北大学 Java
程序员牛肉:太好了,是聊天记录。不得不信了。 当个乐子看就好,不要散播焦虑
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务