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

字符串合并处理

https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f?tpId=37&tags=&title=&difficulty=0&judgeStatus=0&rp=1&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D37

数组排序是0,1,2,3,所以偶数(把0算在内的话)要么与奇数数量相等,要么多一个,所以在下面先插入偶数,在赋值时也是先偶数数组进行赋值

while(line = await readline()){

        let line1 =line.split(' ')

            res = line1[0]+line1[1]

            line2 = res.split('')

            arr1=[]

            arr2=[]

            x =true

            

        for (let i= 0;i<line2.length;i++){ 

            if(x) arr1.push(line2[i]),x=false//偶数下标数组,交叉插入

            else arr2.push(line2[i]),x =true//奇数下标数组,交叉插入

        }

        

        arr1.sort()//排序

        arr2.sort()

        let a=0,b=0,y=true

        for(let i= 0;i<line2.length;i++){          

            if(y) line2[i] =arr1[a],a++,y=false//交叉给原数组赋值

            else line2[i]= arr2[b],b++,y=true 

        }

        let line3 = line2.join('')

//下面是进行符号转换

            line3 = line3.replace(/[0-9a-fA-F]/g,e=>{

                let a = parseInt(e,16).toString(2)//16进制转2进制

                    b = a.split('')

                    while(b.length<4) b.unshift('0')//如果2进制位数不足4则向开头添加0,直到有4位数为止

                    c = b.reverse().join('')

                    d = parseInt(c,2).toString(16)//2进制转16进制

                    if(d.charCodeAt(0)>=97&&d.charCodeAt(0)<=122) return d.toUpperCase()//将转换进制后为小写的字母转换为大写字母

                    return d//返回最终结果

            })

            console.log(line3)

    }

全部评论

相关推荐

zYvv:双一流加大加粗再标红,然后广投。主要是获奖荣誉不够,建议开始不用追求大厂,去别的厂子刷下实习。
点赞 评论 收藏
分享
门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 18:05
哈哈哈哈哈感觉朋友找工作的已经疯掉了,直接上图
码农索隆:真老板娘:“我嘞个去,这不我当年的套路吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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