题解 | #字符串合并处理#
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', function (line) {
// 先合并输入的字符串
// 然后分别获取 偶数索引的值和奇数索引的值 并排序 然后放回原字符串
line = line.replace(' ','').split('')
// 总的数组
let arr = []
// 奇数
let arr1 = [] // 1 3 5
// 偶数
let arr2 = [] // 0 2 4
line.forEach((item,index)=>{
index % 2 ? arr1.push(item):arr2.push(item)
})
arr1.sort()
arr2.sort()
for(let i=0;i<line.length;i++){
// 这里是重点,把奇数数组和偶数数组重新放回原字符串
// 先遍历原字符串长度
// 判断i是奇数,就一个个从奇数数组中获取
// 判断i是偶数,就一个个从偶数数组中获取
i % 2 ? arr.push(arr1.shift()) : arr.push(arr2.shift())
}
// 转换
// 注意:字母是16进制的,转成十进制 parseInt('a',16)
// 转二进制或16进制 toString(n)
arr = arr.map(item=>{
// 下面的做法是:现在通过16进制转10进制,让然后转2进制
// ('0'.repeat(4-item.length)+item)然后解决数字拿到的二进制不是4位数的问题
// 然后把二进制反转后,转成10进制
// 最后转成16进制,由于字母大于f的,不参与转换,所以不匹配g以上
if(/[g-zG-Z]/.test(item)){
return item
}
item = parseInt(item,16).toString(2)
item = parseInt(('0'.repeat(4-item.length)+item).split('').reverse().join(''),2).toString(16).toUpperCase()
return item
})
console.log(arr.join(''))
});
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', function (line) {
// 先合并输入的字符串
// 然后分别获取 偶数索引的值和奇数索引的值 并排序 然后放回原字符串
line = line.replace(' ','').split('')
// 总的数组
let arr = []
// 奇数
let arr1 = [] // 1 3 5
// 偶数
let arr2 = [] // 0 2 4
line.forEach((item,index)=>{
index % 2 ? arr1.push(item):arr2.push(item)
})
arr1.sort()
arr2.sort()
for(let i=0;i<line.length;i++){
// 这里是重点,把奇数数组和偶数数组重新放回原字符串
// 先遍历原字符串长度
// 判断i是奇数,就一个个从奇数数组中获取
// 判断i是偶数,就一个个从偶数数组中获取
i % 2 ? arr.push(arr1.shift()) : arr.push(arr2.shift())
}
// 转换
// 注意:字母是16进制的,转成十进制 parseInt('a',16)
// 转二进制或16进制 toString(n)
arr = arr.map(item=>{
// 下面的做法是:现在通过16进制转10进制,让然后转2进制
// ('0'.repeat(4-item.length)+item)然后解决数字拿到的二进制不是4位数的问题
// 然后把二进制反转后,转成10进制
// 最后转成16进制,由于字母大于f的,不参与转换,所以不匹配g以上
if(/[g-zG-Z]/.test(item)){
return item
}
item = parseInt(item,16).toString(2)
item = parseInt(('0'.repeat(4-item.length)+item).split('').reverse().join(''),2).toString(16).toUpperCase()
return item
})
console.log(arr.join(''))
});