题解 | #字符串合并处理#
字符串合并处理
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 () {
const str = (await readline()).split(" ").join("");
//分开奇偶位并分别按ascii码排序
let odd = "",even = "";
for(let i = 0; i < str.length; i++){
if(i&1) even += str.charAt(i);
else odd += str.charAt(i);
}
odd = odd.split("").sort().join("");
even = even.split("").sort().join("");
// 转换
const transfer = (c) =>{
let num = 0;
if(c>="0"&&c<="9") num = c.charCodeAt()-"0".charCodeAt();
else if(c>="a"&&c<="f") num = c.charCodeAt()-"a".charCodeAt()+10;
else if(c>="A"&&c<="F") num = c.charCodeAt()-"A".charCodeAt()+10;
else return c;//其他字符不转换,坑死
num = parseInt(num.toString(2).padStart(4,0).split("").reverse().join(""),2);
if(num<10) return String(num);
else return String.fromCharCode("A".charCodeAt()+num-10);
}
//处理转换
let res = "",i = 0, j = 0;
while(i<odd.length){
res += transfer(odd.charAt(i++));
j < even.length && (res += transfer(even.charAt(j++)));
}
console.log(res);
}()
快手成长空间 763人发布

查看23道真题和解析