题解 | #字符串合并处理#

字符串合并处理

http://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f

思路

  • 一步步来
  • 字符排序使用 codePointAt
  • 合并后遍历,逐个判断是否需要转化,需要则转为二进制字符串并且保持 4 位,缺位补 0,翻转转二进制,再转 16 进制,再大写
while(input = readline()) {
  const [a, b] = input.split(' ');
  let result = '';
  // step 1
  let str = a + b;
  // step 2
  let idx = 0;
  let oddArr = [];
  let evenArr = [];
  while (idx !== str.length) {
    if (idx % 2 === 0) {
      evenArr.push(str[idx]);
    } else {
      oddArr.push(str[idx]);
    }
    idx++;
  }
  oddArr.sort((a, b) => a.codePointAt() - b.codePointAt());
  evenArr.sort((a, b) => a.codePointAt() - b.codePointAt());
  while (idx !== 0) {
    result += (str.length - idx) % 2 === 0 ? evenArr.shift() : oddArr.shift();
    idx--;
  }

  // step 3
  let last = '';
  while (idx !== result.length) {
    let i = result[idx];
    if((i > 'F' && i < 'a') || i > 'f') {
      last += i;
    } else {
      let temp = [...parseInt(i, 16).toString(2).padStart(4, '0')].reverse().join('');
      last += parseInt(temp, 2).toString('16').toUpperCase();
    }
    idx++;
  }
  console.log(last);
}


全部评论
如果a和b都是数字的话,会不会出问题
点赞 回复 分享
发布于 2022-03-09 20:32

相关推荐

程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务