题解 | #字符串合并处理#逻辑简单

字符串合并处理

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

        String input = in.nextLine();
        String[] split = input.split(" ");
        char[] odd = new char[(split[0].length() + split[1].length()) / 2];
        char[] even = new char[(split[0].length() + split[1].length()) - odd.length];
        boolean isEven = true;
        int ei = 0, oi = 0;
        for (int i = 0; i < split[0].length(); i++) {
            if (isEven) {
                even[i / 2] = split[0].charAt(i);
                isEven = !isEven;
                ++ei;
            } else {
                odd[i / 2] = split[0].charAt(i);
                isEven = !isEven;
                ++oi;
            }
        }

        for (int i = 0; i < split[1].length(); i++) {
            if (isEven) {
                even[i / 2 + ei] = split[1].charAt(i);
                isEven = !isEven;
            } else {
                odd[i / 2 + oi] = split[1].charAt(i);
                isEven = !isEven;
            }
        }

        Arrays.sort(even);
        Arrays.sort(odd);
        ei = oi = 0;
        isEven = true;
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < input.length() - 1; i++) {
            if (isEven) {
                builder.append(convert(even[ei++]));
                isEven = !isEven;
            } else {
                builder.append(convert(odd[oi++]));
                isEven = !isEven;
            }
        }

        System.out.println(builder);

    }

    private static char convert(char c) {
        if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' &&
                c <= 'f')) {
            int i = Integer.parseInt(String.valueOf(c), 16);
            String bs = new StringBuilder(Integer.toBinaryString(i)).reverse().toString();
            if (bs.length() < 4) {
                bs = bs + "0000".substring(bs.length());
            }
            int i1 = Integer.parseInt(bs, 2);
            return Integer.toString(i1, 16).toUpperCase().charAt(0);
        }
        return c;
    }
}

全部评论

相关推荐

爱吃肉的伊登在写日记:好棒,27届简历能做成这个样子,但是第一个项目感觉cover住难度还是不小的,特别是二面的时候肯定要对分布式系统设计这一块儿有高出正常面试者的水平才行
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务