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

字符串合并处理

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

import java.awt.List;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.function.Function;
import java.util.function.IntFunction;
import java.util.stream.IntStream;
import java.util.stream.Stream;

import static java.util.Arrays.*;
import static java.util.stream.Stream.*;


public class Main {
    public static void main(String[] args) throws IOException {

        testTh();
    }

    private static void testTh() throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String str;

        while ((str = bf.readLine()) != null) {
            String[] s = str.split(" ");
            StringBuilder sb = new StringBuilder();
            sb.append(s[0]).append(s[1]);
            String toString = sb.toString();
            /*System.out.println("一开始::::————————————");
            Stream.of(toString).forEach(System.out::println);*/
            char[] chars = toString.toCharArray();
            StringBuilder sb_n1 = new StringBuilder();
            StringBuilder sb_n2 = new StringBuilder();
            for (int i = 0; i < chars.length; i++) {
                if (i % 2 == 0) {
                    sb_n1.append(chars[i]);
                } else {
                    sb_n2.append(chars[i]);
                }
            }
            sb.delete(0, sb.length());
            char[] chars2 = sb_n1.toString().toCharArray();//偶数
            Arrays.sort(chars2);
            /*System.out.println("偶数::::————————————");
            Stream.of(chars2).forEach(System.out::println);*/
            String[] characters1 = new String[chars2.length];
            for (int i = 0; i < chars2.length; i++) {
                characters1[i] = chars2[i] + "";
            }
            char[] chars3 = sb_n2.toString().toCharArray();//奇数
            Arrays.sort(chars3);
            /* System.out.println("奇数::::————————————");
             Stream.of(chars3).forEach(System.out::println);*/
            String[] characters2 = new String[chars3.length];
            for (int i = 0; i < chars3.length; i++) {
                characters2[i] = chars3[i] + "";
            }

            /* System.out.println("偶数:                      ---------");
             Stream.of(characters1).forEach(System.out::println);*/


            int j = 0;
            int z = 0;
            StringBuilder stringBuilder_2 = new StringBuilder();
            for (int i = 0; i < chars.length; i++) {
                if (i % 2 == 0) {
                    stringBuilder_2.append(characters1[j++]);
                } else {
                    stringBuilder_2.append(characters2[z++]);
                }
                /*System.out.println("i为:"+i);*/
                if (i / 2 >= characters1.length && i / 2 >= characters2.length) {
                    break;
                }
            }
            /*System.out.println("stringBuilder_2::::————————————");
            Stream.of(stringBuilder_2.toString()).forEach(System.out::println);*/
            char[] chars1 = stringBuilder_2.toString().toCharArray();
            StringBuilder true_sb = new StringBuilder();
            for (char c : chars1) {
                if ((c >= '0' && c <= '9')) {
                    String s_n = c + "";
                    int FLAG = 0;
                    String toBinaryString = Integer.toBinaryString(Integer.parseInt(s_n));
                    StringBuilder po = new StringBuilder();
                    if (toBinaryString.length() < 4) {
                        for (int i = 0; i < 4 - toBinaryString.length(); i++) {
                            po.append("0");
                        }
                    }
                    String toString1 = po.append(toBinaryString).reverse().toString();
                    int i = Integer.parseInt(toString1, 2);
                    String i1 = "";
                    if (i >= 10) {
                        i1 = Integer.toHexString(i).toUpperCase();
                        FLAG = 1;
                    }
                    if (FLAG == 0) {
                        true_sb.append(i);
                    } else {
                        true_sb.append(i1);
                    }
                } else if ((c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f')) {
                    Integer integer = Integer.valueOf(c + "", 16);
                    /*System.out.println("integer  "+integer);*/
                    String binaryString = Integer.toBinaryString(integer);
                    /*  System.out.println("binaryString  "+binaryString);*/
                    StringBuilder stringBuilder = new StringBuilder();
                    String s3 = stringBuilder.append(binaryString).reverse().toString();
                    /*System.out.println("s3  "+s3);*/
                    int parseInt = Integer.parseInt(s3, 2);
                    /* System.out.println("parseInt  "+parseInt);*/
                    String toHexString = Integer.toHexString(parseInt).toUpperCase();
                    true_sb.append(toHexString);
                } else {
                    true_sb.append(c);
                }
            }
            Stream.of(true_sb.toString()).forEach(System.out::println);
        }


    }




}

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-27 18:00
点赞 评论 收藏
分享
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
05-30 12:03
山西大学 C++
offer来了我跪着...:不是骗子,等到测评那一步就知道为啥这么高工资了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务