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

字符串合并处理

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

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            String s = scanner.next();
            String s2 = scanner.next();
            s=s+s2;
//            System.out.println(s);
            char[] cs = s.toCharArray();
            ArrayList<Character> odd = new ArrayList<>();
            ArrayList<Character> even = new ArrayList<>();
            String odds="";
            String evens="";
            for (int i = 0; i <cs.length; i++) {
                if(i%2==0){
                    even.add(cs[i]);
                    evens=evens+cs[i];
                }else {
                    odd.add(cs[i]);
                    odds=odds+cs[i];
                }
            }
            char[] cbackodd = cback(odds);
            char[] cbackeven = cback(evens);
            int countod=0;
            int countev=0;
            String re="";
            for (int i = 0; i <cs.length; i++) {
                if(i%2==0){
                    re=re+cbackeven[countod];
                    countod++;
                }else {
                    re=re+cbackodd[countev];
                    countev++;
                }
            }
//            System.out.println(re);
            String reback = Main.reback(re);
            System.out.println(reback);
        }
    }
    public static char[] cback(String str){
        char[] chars= str.toCharArray();
        Arrays.sort(chars);
        return chars;
    }
    public static String reback(String str){
        String[] split = str.split("");
        for (int i = 0; i < split.length; i++) {
            if (split[i].matches("[a-fA-F0-9]")){
                int i1 = Integer.parseInt(split[i], 16);//16进制转10进制
                String strer = Integer.toString(i1, 2);
                int length = strer.length();
                ArrayList<Integer> inte= new ArrayList<>();
                inte.add(length);
                if (strer.length()<5){
                    for (int j = 0; j <4-inte.get(0); j++) {
                        strer="0"+strer;
                    }
                }
//                System.out.println("未反转二进制数为"+strer);
                String newer="";
                for (int j = strer.length()-1; j >=0; j--) {
                    newer=newer+strer.charAt(j);
                }
//                System.out.println("反转后二进制数为"+newer);
                int i2 = Integer.parseInt(newer, 2);//2进制转10进制
                String string = Integer.toString(i2, 16);// 十进制整数10转成16进制
                char c = string.charAt(0);
                if (Character.isLowerCase(c)){
                    string = String.valueOf(c).toUpperCase();
                }
                split[i]=string;
            }
        }
//        System.out.println("加密数组为"+Arrays.toString(split));
        String success="";
        for (int i = 0; i < split.length; i++) {
            success=success+split[i];
        }
        return success;
    }
}

全部评论

相关推荐

霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务