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

