题解 | #字符串处理#

字符串合并处理

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

思路

直接模拟

如何利用好Java的库来缩短编写时间

请叫我调库大师

代码


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

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        //获取输入
        Scanner in = new Scanner(System.in);        
        String s1=in.next();
        String s2=in.next();
        
        //合并字符串
        String s=s1+s2;
        int len=s.length();
        
        ArrayList<Character> a0=new ArrayList<>();//偶数位字符
        ArrayList<Character> a1=new ArrayList<>();//奇数位字符
        
        for(int i=0;i<len;i++){
            if(i%2==0){a0.add(s.charAt(i));}//
            if(i%2==1){a1.add(s.charAt(i));}//
        }
        //ArrayList中的Collections.reverse()为逆排;
        Collections.sort(a0);Collections.sort(a1);
        String res="";
        
        int k0=0;//偶数下标
        int k1=0;//技术下标
        
        for(int i=0;i<len;i++){
            if(k0<a0.size() && i%2==0){
                //添加偶数位
                res=res+zh(a0.get(k0++));
            }
            else if(k1<a1.size() && i%2==1){
                //添加奇数位
                res=res+zh(a1.get(k1++));
            }
            else if(k0>=a0.size()){
                //奇数位剩余
                res=res+zh(a1.get(k1++));
            }
            else if(k1>=a1.size()){
                //偶数位剩余
                res=res+zh(a0.get(k0++));
            }
        }
        System.out.println(res);
    }
    static public String zh(char a){
        //合法的十六进制字符就判断
        if((a-'a'<=5 && a-'a'>=0) ||(a-'A'>=0 && a-'A'<=5)||(a-'0'>=0 && a-'0'<=9)){
            StringBuilder sa=new StringBuilder(Integer.toBinaryString(Integer.parseInt(a+"",16)));
            while(sa.length()<4){
                sa.replace(0,0,"0");
            }
            sa.reverse();
            String sa1=sa+"";
            return Integer.toHexString(Integer.parseInt(sa1,2)).toUpperCase();
        }
        //不合法的十六进制字符直接返回
        return a+"";
    }
}

时间复杂度:O(n)

空间复杂度:O(n)

全部评论

相关推荐

头像 会员标识
11-27 17:08
已编辑
牛客_产品运营部_私域运营
腾讯 普通offer 24k~26k * 15,年包在36w~39w左右。
点赞 评论 收藏
分享
球球别再泡了:坏,我单9要了14
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务