描述
定义“调整”操作为,对于一个十进制数字,将其转换为二进制数,翻转,再转换为十六进制数(大写)。例如,(4)10 对应的二进制数为 (100)2 ,翻转后得到 (001)2 ,再转换为十六进制数为 (1)16 。
对于给定的仅由小写字母 a-f 、大写字母 A-F 、数字 0-9 构成的字符串 s 和 t ,请按照以下步骤进行处理:
∙第一步,将 s 和 t 合并,形成一个新字符串 u 。
∙第二步,将 u 中奇数位字符从小到大进行排序,随后将偶数位字符也从小到大进行排序,得到 u′ 。
∙第三步,对 u′ 中的字符依次转换为十进制数,随后执行“调整”操作。
输出最终的字符串。
输入描述:
在一行上输入两个长度 1≦length(s),length(t)≦100 ,仅由小写字母 a-f 、大写字母 A-F 、数字 0-9 构成的字符串 s 和 t ,代表待处理的字符串。
输出描述:
在一行上输出一个字符串,代表最终的字符串。
const rl = require("readline").createInterface({ input: process.stdin });
rl.on("line", (line) => {
// 第一步
const arr = line.replace(" ", "").split("");
// 第二步
const arr0 = arr.filter((x, i) => i % 2 === 0).sort();
const arr1 = arr.filter((x, i) => i % 2 === 1).sort();
const arr2 = [];
for (let i = 0; i < arr0.length; i++) {
arr2.push(arr0[i]);
arr2.push(arr1[i]);
}
// 第三步
const arr3 = arr2.map((x) => {
if (/^[\da-fA-F]$/.test(x)) {
return parseInt(
parseInt(x, 16)
.toString(2)
.padStart(4, 0)
.split("")
.reverse()
.join(""),
2
)
.toString(16)
.toUpperCase();
} else {
return x;
}
});
console.log(arr3.filter((x) => x).join(""));
});