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

字符串合并处理

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

import java.util.*;
import java.lang.*;

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

            //根据字符串长度是否能被2整除确定偶数位数组的长度
            int l0 = 0;
            int l1 = s.length() / 2;
            if (s.length() % 2 == 0) {
                l0 = s.length() / 2;
            } else {
                l0 = s.length() / 2 + 1;
            }
            char[] c0 = new char[l0];
            char[] c1 = new char[l1];

            //根据字符串长度是否能被2整除,分别将奇数位和偶数位的字符放入数组;
            int i = 0;
            if (s.length() % 2 == 0) {
                for (; i < s.length(); i += 2) {
                    c0[i / 2] = s.charAt(i);
                    c1[i / 2] = s.charAt(i + 1);
                }
            } else {
                for (; i < s.length() - 1; i += 2) {
                    c0[i / 2] = s.charAt(i);
                    c1[i / 2] = s.charAt(i + 1);
                }
                c0[l0 - 1] = s.charAt(s.length() - 1);
            }

            //对数组排序后重新拼接成新的字符串
            Arrays.sort(c0);
            Arrays.sort(c1);
            int j=0;
            StringBuilder sb = new StringBuilder();
            if (s.length() % 2 == 0) {
                for (; j < s.length(); j += 2) {
                    sb.append(c0[j/2]);
                    sb.append(c1[j/2]);
                }
            } else {
                for (; j < s.length() - 1; j += 2) {
                    sb.append(c0[j/2]);
                    sb.append(c1[j/2]);
                }
                sb.append(c0[l0 - 1]);
            }
            s=sb.toString();

            //对新字符串中的[0-9a-fA-F]按第三步要求进行处理
            StringBuilder sbb=new StringBuilder();
            for(int k=0;k<s.length();k++){
                String sk=String.valueOf(s.charAt(k));
                if(sk.matches("[0-9a-fA-F]")){
                    int sk16=Integer.parseInt(sk,16);
                    StringBuilder sb0=new StringBuilder();
                    String s20=Integer.toBinaryString(sk16);
                    int buwei = 4-s20.length();
                    for(int b=0;b<buwei;b++) {s20="0"+s20;}
                    sb0.append(s20);
                    sb0.reverse();
                    int s2 =Integer.parseInt(sb0.toString(),2);
                    String s16=Integer.toString(s2,16);
                    String ski=s16.toUpperCase();
                    sbb.append(ski);                
                    
                }else{
                    sbb.append(sk);
                }
                
            }
            System.out.println(sbb.toString());

        }
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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