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

字符串合并处理

https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String a = in.nextLine().replaceAll(" ", "");

            // System.out.println(getMix(a));
            // System.out.println((int)'0');
            String str = getMix(a);
            // System.out.println(str);
            char[] charArr = str.toCharArray();
            int n = charArr.length;
            for (int i = 0; i < n; i++) {
                charArr[i] = changeChar(charArr[i]);
            }
            String str2 = new String(charArr);
            System.out.println(str2);
        }
    }

    public static char changeChar(char input) {
        String tempStr = null;
        if (input >= '0' && input <= '9') {
            tempStr = Integer.toBinaryString(input - '0');
        } else if (input >= 'A' && input <= 'F') {
            tempStr = Integer.toBinaryString(input - '7');
        } else if (input >= 'a' && input <= 'f') {
            tempStr = Integer.toBinaryString(input - 'W');
        } else {
            return input;
        }
        // System.out.println(tempStr);
        while (tempStr.length() < 4) {
            tempStr = "0" + tempStr;
        }
        char[] tempCharArr = tempStr.toCharArray();
        //反向遍历
        int sum = 0;
        for (int i = 3; i > -1; i--) {
            sum += (tempCharArr[i] - '0') * Math.pow(2, i);
        }

        if (sum >= 0 && sum <= 9) {
            return (char)(sum + 48);
        } else {
            return (char)(sum + 55);
        }
    }

    public static String getMix(String input1) {
        char[] input2 = input1.toCharArray();
        char[] ouShu = new char[input2.length / 2 + input2.length % 2];
        char[] jiShu = new char[input2.length / 2];

        for (int i = 0; i < input2.length; i++) {
            if (i % 2 == 0) {
                ouShu[i / 2] = input2[i];
            } else {
                jiShu[(i - 1) / 2] = input2[i];
            }
        }

        Arrays.sort(ouShu);
        Arrays.sort(jiShu);

        for (int i = 0; i < input2.length; i++) {
            if (i % 2 == 0) {
                input2[i]   = ouShu[i / 2];
            } else {
                input2[i] = jiShu[(i - 1) / 2];
            }
        }

        return (new String(input2));
    }
}

全部评论

相关推荐

03-31 18:02
门头沟学院 Java
白日梦想家_等打包版:不要的哦佛给我
点赞 评论 收藏
分享
ResourceUtilization:差不多但是估计不够准确,一面没考虑到增长人口,另一方面也没考虑到能上大学的人数比例,不过我猜肯定只多不少
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务