知识点
str.padStart(4, '0') 表示在str的前面填充0直到str的长度为4,同理还有padEnd
arr = arr.filter(Boolean)表示过滤掉空字符,不改变原数组
parseInt(str, 2)表示将str由二进制变为十进制
parseInt(str, 16)表示将str由十六进制变为十进制
str.toString(2)表示将str由十进制变为二进制
str.toString(16)表示将str由十进制变为十六进制
其他非十进制转为其他非十进制,需得先转为十进制,再转为其他进制
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 let str = await readline() // 第一步 let arr = str.replace(' ', '').split('') let len = arr.length let arr1 = [], arr2 = [] while(arr.length) { arr1.push(arr.shift()) arr2.push(arr.shift()) } // 第二步 arr1.sort() arr2 = arr2.filter(Boolean).sort() while(arr.length < len) { arr.push(arr1.shift()) arr.push(arr2.shift()) } arr = arr.filter(Boolean) // 过滤掉空值 // 第三步 let res = arr.map(el => el = parseInt(el, 16) ? parseInt(parseInt(el, 16).toString(2).padStart(4, '0').split('').reverse().join(''), 2).toString(16).toUpperCase() : el ).join('') console.log(res) }()