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

字符串合并处理

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

// 0 1 2 3 4 5 6 7
// 注意:二进制转十进制parseInt(n, 2)
// 注意:这里使用toString(2)转化为二进制,比如1得到'1',但我们需要的是'0001,所以需要特殊处理
// 注意:除了a-fA-F0-9其他的字母不做转化处理

let str = readline().split(' ').join('')

print(fn(str))

function fn(str) {
    let s = '', odd = [], even = [], res = ''
    for(let i=0; i<str.length; i++) {
        if(i%2==0)even.push(str[i])
        else odd.push(str[i])
    }
    odd.sort()
    even.sort()
    for(let i=0; i<str.length; i++) {
        if(i%2==0)s+=even[i/2]
        else s+=odd[(i-1)/2]
    }
    for(let i=0; i<s.length; i++) {
        res += change(s[i])
    }
    return res
}

function change(s) {
    if(/[^a-fA-F0-9]/.test(s))return s
    let n1 = parseInt(s, 16)
    let n2 = handle(n1)
    let n3 = parseInt(n2, 2).toString(16).toUpperCase()
    return n3
}

function handle(n) {
    let a = n.toString(2).split('')
    while(a.length<4) {
       a.unshift('0') 
    }
    return a.reverse().join('')
}
全部评论

相关推荐

藏剑天涯:全要了 领4份工资
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务