题解 | #字符串合并处理#
字符串合并处理
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)); } })();