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

字符串合并处理

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

const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
rl.on('line', function (line) {
    // 获取两个字符串
    let [str1, str2] = line.split(' ')
    // 合并字符串
    let str = str1 + str2
    // 分隔奇偶字符组成新字符串
    let [even, odd] = ['', '']
    for(let i = 0; i < str.length; i++){
        // 奇数字符串
        if(i % 2){
            odd += str[i]
        }else {
            even += str[i]
        }
    }

    // 排序
    odd = odd.split('').sort().join('')
    even = even.split('').sort().join('')

    let newStr = ''
    // 将排序后奇偶字符串按照奇偶位置重新组合
    for(let i = 0; i < even.length; i++){
        newStr += `${even[i] || ''}${odd[i] || ''}`
    }
   
    const charArr = newStr.split('')
    // 排序之后,对 '0'~'9'、'A'~'F'和'a'~'f',转换
    for(let i = 0; i < charArr.length; i++){
        // 检测是否需要转换
        if(/^[0-9a-fA-F]$/.test(charArr[i])){
            // 如果是a-f这些则要进行数据转换
            switch(charArr[i]) {
                case 'a':
                case 'A':
                    charArr[i] = '10';
                    break;
                case 'b':
                case 'B':
                    charArr[i] = '11';
                    break;
                case 'c':
                case 'C':
                    charArr[i] = '12';
                    break;
                case 'd':
                case 'D':
                    charArr[i] = '13';
                    break;
                case 'e':
                case 'E':
                    charArr[i] = '14';
                    break;
                case 'f':
                case 'F':
                    charArr[i] = '15';
                    break;
            }

            // 转二进制,然后倒叙,然后再转成十六进制,转大写
            // 放回原来的位置,再小写转大写
            // parseInt(字符串/数字,参数一是多少进制的数)  作用是搞成十进制数
            // 有点问题,就是1转二进制的时候,会变成1,有问题,解决:使用,padStart(4,'0')
            // 转换后的二进制四位显示,然后不足四位的的在前面补0
            charArr[i] = parseInt(Number(charArr[i]).toString(2).padStart(4,'0').split('').reverse().join(''), 2).toString(16).toLocaleUpperCase()

        }
    }

    // 打印最终结果
    console.log(charArr.join(''))
});

全部评论

相关推荐

屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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