题解 | #字符串合并处理#
字符串合并处理
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
// 0 1 2 3 4 5 6 7 // 注意:二进制转十进制parseInt(n, 2) // 注意:这里使用toString(2)转化为二进制,比如1得到'1',但我们需要的是'0001,所以需要特殊处理 // 注意:除了a-fA-F0-9其他的字母不做转化处理 let str = readline().split(' ').join('') print(fn(str)) function fn(str) { let s = '', odd = [], even = [], res = '' for(let i=0; i<str.length; i++) { if(i%2==0)even.push(str[i]) else odd.push(str[i]) } odd.sort() even.sort() for(let i=0; i<str.length; i++) { if(i%2==0)s+=even[i/2] else s+=odd[(i-1)/2] } for(let i=0; i<s.length; i++) { res += change(s[i]) } return res } function change(s) { if(/[^a-fA-F0-9]/.test(s))return s let n1 = parseInt(s, 16) let n2 = handle(n1) let n3 = parseInt(n2, 2).toString(16).toUpperCase() return n3 } function handle(n) { let a = n.toString(2).split('') while(a.length<4) { a.unshift('0') } return a.reverse().join('') }