题解 | #字符串合并处理#
字符串合并处理
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;
void async function () {
// Write your code here
const [s1, s2] = (await readline()).split(" ");
const str = s1 + s2;
const odd = [];
const even = [];
for (let i = 0; i < str.length; i++) {
if (i % 2 === 0) {
even.push(str[i]);
} else {
odd.push(str[i]);
}
}
odd.sort((a,b) => a < b ? -1 : 1);
even.sort((a,b) => a < b ? -1 : 1);
const combine = [];
for (let i = 0; i < Math.ceil(str.length / 2); i++) {
const ev = even.shift();
const od = odd.shift();
ev !== undefined && combine.push(ev);
od !== undefined && combine.push(od);
}
for (let i = 0; i < combine.length; i++) {
const char = combine[i];
if ((char <= '9' && char >= '0') || (char >= 'a' && char <= 'f') || (char >= 'A' && char <= 'F')) {
const binary = parseInt(char, '16').toString("2").padStart(4, "0");
const reverseBin = binary.split('').reverse().join('');
combine[i] = parseInt(reverseBin, '2').toString("16").toUpperCase();
}
}
console.log(combine.join(''));
}()