题解 | #字符串合并处理#
字符串合并处理
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; }