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

字符串合并处理

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;

/**
 * 对输入的两个字符串str1和str2进行处理,具体处理规则见题目描述
 * @param {string} str1 字符串1
 * @param {string} str2 字符串2
 * @return {string} 返回处理后的字符串
 */
function processString(str1, str2) {
    // Step 1: 合并
    let mergedStr = str1 + str2;
    // Step 2: 奇偶排序
    let evenArr = []; // 下标为偶数对应的字符
    let oddArr = []; // 下标为奇数对应的字符
    for (let i = 0; i < mergedStr.length; i++) {
        if (i % 2 === 0) {
            evenArr.push(mergedStr[i]);
        } else {
            oddArr.push(mergedStr[i]);
        }
    }
    evenArr.sort();
    oddArr.sort();
    let sortedStr = "";
    for (let i = 0; i < evenArr.length || i < oddArr.length; i++) {
        if (i < evenArr.length) {
            sortedStr += evenArr[i];
        }
        if (i < oddArr.length) {
            sortedStr += oddArr[i];
        }
    }
    // Step 3: 混合转换
    function convert(char) {
        if (/[\dA-Fa-f]/.test(char)) {
            let hexStr = parseInt(char, 16).toString(2).padStart(4, "0");
            let reversedBinaryStr = hexStr.split("").reverse().join("");
            let reversedHexStr = parseInt(reversedBinaryStr, 2)
                .toString(16)
                .toUpperCase();
            return reversedHexStr;
        }
        return char;
    }
    let result = Array.from(sortedStr, convert).join("");
    return result;
}

void (async function () {
    // Write your code here
    while ((line = await readline())) {
        let [s1, s2] = line.split(" ");
        console.log(processString(s1, s2));
    }
})();

全部评论

相关推荐

牛客837006795号:简历抄别人的,然后再投,有反馈就是简历不行,没反馈就是学历不行,多投多改只要技术不差机会总会有的
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 17:30
找实习找着找着就要进入7月了,马上秋招也要开始了,找实习还有意义吗?
绝迹的星:有面就面, 没面上就当日薪4位数大佬免费培训, 面上了再考虑要不要实习
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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