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

字符串合并处理

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

fw一个……自己断断续续写了一个小时,仅作个人记录,不做参考

let str=readline().split(" ").join("")
let strOdd=sub(str,1).sort()
let strEven=sub(str,0).sort()
let mergedStr=merg(strEven,strOdd)
console.log(transform(mergedStr))

function merg(str0, str1){
    let res=''
    if(str0.length==str1.length){
        for(let i=0;i<str0.length;i++){
            res+=str0[i]+str1[i]
        }
        return res;
    }else{
        for(let i=0;i<str1.length;i++){
            res+=str0[i]+str1[i]
        }
        res+=str0[str0.length-1]
        return res;
    }
}

function sub(str,i){
    let res=[]
    for(;i<str.length;i+=2)
        res.push(str[i])
    return res;
}

function transform(str){
    let res=''
    const book=[
        {
            rule:/[0-9]/,
            trans:(s)=>{
                let num=parseInt(s).toString(2).split('')
                for(let i=0;i<4;i++){
                    if(num.length<4)    num.unshift('0');
                }
                let res=parseInt(num.reverse().join(''),2)
                return res.toString(16).toUpperCase();
            }
        },{
            rule:/[a-fA-F]/,
            trans:(s)=>{
                let temp=parseInt('0x'+s,16)
                let num=parseInt(temp).toString(2).split('')
                for(let i=0;i<4;i++){
                    if(num.length<4)    num.unshift('0');
                }
                let res=parseInt(num.reverse().join(''),2)
                return res.toString(16).toUpperCase();
            }
        },{
            rule:/[^0-9a-f]/,
            trans:(s)=>s
        }
    ]
    for(ch of str){
        for(let i=0;i<3;i++){
            if(book[i].rule.test(ch)){
                res+=book[i].trans(ch)
                break;
            }
        }
    }
    return res;
}


#华为机试#
全部评论

相关推荐

刘湘_passion:太强了牛肉哥有被激励到
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务