题解 | #字符串合并处理#
字符串合并处理
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
fw一个……自己断断续续写了一个小时,仅作个人记录,不做参考
let str=readline().split(" ").join("")
let strOdd=sub(str,1).sort()
let strEven=sub(str,0).sort()
let mergedStr=merg(strEven,strOdd)
console.log(transform(mergedStr))
function merg(str0, str1){
let res=''
if(str0.length==str1.length){
for(let i=0;i<str0.length;i++){
res+=str0[i]+str1[i]
}
return res;
}else{
for(let i=0;i<str1.length;i++){
res+=str0[i]+str1[i]
}
res+=str0[str0.length-1]
return res;
}
}
function sub(str,i){
let res=[]
for(;i<str.length;i+=2)
res.push(str[i])
return res;
}
function transform(str){
let res=''
const book=[
{
rule:/[0-9]/,
trans:(s)=>{
let num=parseInt(s).toString(2).split('')
for(let i=0;i<4;i++){
if(num.length<4) num.unshift('0');
}
let res=parseInt(num.reverse().join(''),2)
return res.toString(16).toUpperCase();
}
},{
rule:/[a-fA-F]/,
trans:(s)=>{
let temp=parseInt('0x'+s,16)
let num=parseInt(temp).toString(2).split('')
for(let i=0;i<4;i++){
if(num.length<4) num.unshift('0');
}
let res=parseInt(num.reverse().join(''),2)
return res.toString(16).toUpperCase();
}
},{
rule:/[^0-9a-f]/,
trans:(s)=>s
}
]
for(ch of str){
for(let i=0;i<3;i++){
if(book[i].rule.test(ch)){
res+=book[i].trans(ch)
break;
}
}
}
return res;
}
查看25道真题和解析