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

字符串合并处理

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

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

void async function () {
    const str = (await readline()).split(" ").join("");
    //分开奇偶位并分别按ascii码排序
    let odd = "",even = "";
    for(let i = 0; i < str.length; i++){
        if(i&1) even += str.charAt(i);
        else  odd += str.charAt(i);
    }
    odd = odd.split("").sort().join("");
    even = even.split("").sort().join("");

    // 转换
    const transfer = (c) =>{
        let num = 0;
        if(c>="0"&&c<="9") num = c.charCodeAt()-"0".charCodeAt();
        else if(c>="a"&&c<="f") num = c.charCodeAt()-"a".charCodeAt()+10;
        else if(c>="A"&&c<="F") num = c.charCodeAt()-"A".charCodeAt()+10;
        else return c;//其他字符不转换,坑死
        num = parseInt(num.toString(2).padStart(4,0).split("").reverse().join(""),2);
        if(num<10) return String(num);
        else return String.fromCharCode("A".charCodeAt()+num-10);
    }
    //处理转换
    let res = "",i = 0, j = 0;
    while(i<odd.length){
        res += transfer(odd.charAt(i++));
        j < even.length && (res += transfer(even.charAt(j++)));
    }
    console.log(res);
}()

全部评论

相关推荐

09-29 16:59
已编辑
门头沟学院 Java
牛客96609213...:疯狂背刺,之前还明确设置截止日期,还有笔试,现在一帮人卡在复筛,他反而一边开启扩招,还给扩招的免笔试,真服了,你好歹先把复筛中的给处理了再说
投递大疆等公司10个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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