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

字符串合并处理

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

const rl = require("readline").createInterface({
    input: process.stdin,
    output: process.stdout,
});

var iter = rl[Symbol.asyncIterator]();

const readline = async () => (await iter.next()).value;

void (async function () {
    while ((line = await readline())) {
        // 1.合并
        const initialArr = line.split(" ").join("");

        // 2.排序(按奇偶位置)
        const tempOddArr = [];
        const tempEvenArr = [];
        for (let i = 0; i < initialArr.length; i++) {
            let item = initialArr[i];
            if (i % 2 == 0) {
                tempEvenArr.push(item);
            } else {
                tempOddArr.push(item);
            }
        }
        tempEvenArr.sort();
        tempOddArr.sort();
        let targetStr = "";
        // 取最大长度
        const evenLen = tempEvenArr.length
        const oddLen = tempOddArr.length
        const len = Math.max(evenLen, oddLen)
        // 合并
        for (let i = 0; i < len; i++) {
            targetStr += (tempEvenArr[i] || '') + (tempOddArr[i] || '');
        }

        // 3.字符串转换(十六进制换成2进制或者十进制,再倒序,再转成大写)
        let targetArr = targetStr.split("");
        let result = [];
        for(let i = 0;i < targetArr.length; i++){
            let item = targetArr[i]
            let finalStr = item
             if (!isNaN(item) && item !== '') {
                // 数字转成2进制 倒序
                let num = Number(item).toString(2);
                num = num.padStart(4, 0).split("").reverse().join("");
                const tempItem = parseInt(num, 2);
                // 大于等于10 转16进制
                if (tempItem >= 10) {
                    finalStr = String.fromCharCode(tempItem + 55);
                } else {
                    finalStr = String(tempItem);
                }
            }

            // 小写字母
            if (/[a-f]/.test(item)) {
                let tempItem = parseInt(item, 16);
                const num = tempItem.toString(2);
                item = num.padStart(4, 0).split("").reverse().join("");
                tempItem = parseInt(item, 2);
                if (tempItem >= 10) {
                    // 有小写的需要转大写
                    finalStr = String.fromCharCode(tempItem + 55);
                } else {
                    finalStr = String(tempItem);
                }
            }


            // 大写字母
            if (/[A-F]/.test(item)) {
                let tempItem = item.charCodeAt() - 55;
                const num = tempItem.toString(2);
                item = num.padStart(4, 0).split("").reverse().join("");
                tempItem = parseInt(item, 2);
                if (tempItem >= 10) {
                    finalStr = String.fromCharCode(tempItem + 55);
                } else {
                    finalStr = String(tempItem);
                }
            }
            result.push(finalStr);

        }
        console.log(result.join(""));
    }
})();

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-25 17:55
点赞 评论 收藏
分享
07-29 12:14
门头沟学院 Java
程序员小白条:oppo不用想了,经常看92都挂的
点赞 评论 收藏
分享
小时候觉得老师是很伟大的职业&nbsp;感觉老师都是人中龙凤才能当&nbsp;后来考入大学&nbsp;发现以前的老同学也是公费师范生了&nbsp;他们什么样什么人品&nbsp;我还不清楚吗&nbsp;只能希望他们以后也会有改变&nbsp;要不纯属耽误孩子&nbsp;实习之后发现&nbsp;有的领导&nbsp;能当上领导也可能运气成分很多&nbsp;自己决策方面很差&nbsp;分配给属下的东西自己也说不明白&nbsp;&nbsp;前些年那些明星&nbsp;各种塌房&nbsp;少林寺大师都能有情人和孩子&nbsp;越长大越发现世界就是个草台班子&nbsp;以前对不懂的东西有一层羡慕的滤镜&nbsp;接触之后发现就不是那回事了
RazerYang:其实也是幸存者偏差,你只关注草台班子的部分,所以觉得世界都是草台班子。实际上你每天能安全地从床上醒来,有稳定的天然气、自来水和电力供应,能让你吃上热乎的饭菜,能收到持续稳定的信号去刷手机,花几块钱就能坐地铁从城市的一端快速移动到另一端,花几百块就能在一天之内安全穿越整个国家,这都不是一个草台班子能实现的。燃气、水利、电力、通信、公交、民航,还有最重要的公安和国防,这些都不是草台班子能做的,有无数普通人构筑了你生活的方方面面,而你也将加入他们。
我对___祛魅了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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