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

字符串合并处理

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

知识点

str.padStart(4, '0') 表示在str的前面填充0直到str的长度为4,同理还有padEnd

arr = arr.filter(Boolean)表示过滤掉空字符,不改变原数组

parseInt(str, 2)表示将str由二进制变为十进制

parseInt(str, 16)表示将str由十六进制变为十进制

str.toString(2)表示将str由十进制变为二进制

str.toString(16)表示将str由十进制变为十六进制

其他非十进制转为其他非十进制,需得先转为十进制,再转为其他进制

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    // Write your code here
    let str = await readline()
    // 第一步
    let arr = str.replace(' ', '').split('')
    let len = arr.length
    let arr1 = [], arr2 = []
    while(arr.length) {
        arr1.push(arr.shift())
        arr2.push(arr.shift())
    }

    // 第二步
    arr1.sort()
    arr2 = arr2.filter(Boolean).sort()
    while(arr.length < len) {
        arr.push(arr1.shift())
        arr.push(arr2.shift())
    }
    arr = arr.filter(Boolean) // 过滤掉空值

    // 第三步
    let res = arr.map(el => 
        el = parseInt(el, 16) ? parseInt(parseInt(el, 16).toString(2).padStart(4, '0').split('').reverse().join(''), 2).toString(16).toUpperCase() : el
    ).join('')
    console.log(res)
}()

全部评论

相关推荐

点赞 评论 收藏
分享
ZywOo_求职版:谁问你了....
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
收到了小米的实习offer,犹豫是否要去。。。
认真搞学习:雷总还当过首富呢,公司不算大厂算独角兽吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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