JavaSript实现
while(line = readline()){
let a = line.trim().split(' ')
console.log(mergeSortStr(a[0], a[1]))
}
// 合并字符传
function mergeSortStr(str1, str2){
let mergeStr = str1 + str2
let n = mergeStr.length
let evenArr = [] // 偶数索引上的字符数组
let oddArr = [] // 奇数索引上的字符数组
let sortArr = []
for(let i=0; i< n; i += 2){
evenArr.push(mergeStr[i])
}
evenArr.sort() // 按照ASCII码值进行排序
for(let j=1; j< n; j += 2){
oddArr.push(mergeStr[j])
}
oddArr.sort()
for(let k=0; k < n; k++){
sortArr[k] = k % 2 === 0 ? evenArr.shift() : oddArr.shift()
}
while(evenArr.length >= 1){
sortArr.push(evenArr.shift())
}
while(oddArr.length >= 1){
sortArr.push(oddArr.shift())
}
changeBinary(sortArr)
return sortArr.join('')
}
function changeBinary(strArr){
for(let i=0; i< strArr.length; i++){
let str = strArr[i]
if(/[0-9]+/.test(str) || /[A-Fa-f]+/.test(str)){
let twoArr = new Array(4).fill(0) // 定义长度为4的数组
let binaryStr = parseInt(str, 16).toString(2) // 获取当前字符(十六进制)的二进制表示值
for(let j = binaryStr.length -1, k = 3; j>=0; j--, k--){
twoArr[k] = binaryStr[j]
}
let char = parseInt(twoArr.reverse().join(''), 2).toString(16).toUpperCase()
strArr[i] = char
}
}
}