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

字符串合并处理

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

#概要:
#1、奇数偶数位分别排序,直接用冒泡排序实现
#2、进制转换用了format(i,"04b"),更方便一些 


s1,s2 = input().split()

# step1:前后合并字符串
s = s1+s2
la = list(s)

# step2:奇数偶数位分别排序
    #使用冒泡排序思想,由于奇偶分别排序,所以是隔一位进行比较
    #另外一次冒泡,实际分别排好了奇偶数列的最大位,所以冒泡轮次减半了
n=len(la)
for i in range(n//2+1):
    for j in range(0,n-i-2):
        if la[j] > la[j+2]:
            la[j],la[j+2]=la[j+2],la[j]

# step3:
    # '0'~'9'、'A'~'F'和'a'~'f'字符转换
    # 16进制转为2进制,倒转,再转回16进制

def hex2bin(h):
    i = int(h,base=16)    #十六进制先转为10进制数
    b = format(i,"04b")   #十进制数再转为2进制,04b表示转为4位的2进制数,不够的前面补充0
    return b

def bin_reverse(b):
    return b[-1::-1]     

def bin2hex(b):
    i = int(b,base=2)     #二进制数先转换为10进制
    h = format(i,'X')     #十进制数再转换为16进制,X表示大写字母表示16进制数
    return h

def int_process(n):
    b = hex2bin(n)     #16进制转为2进制
    b_r = bin_reverse(b)  #2进制数倒转
    h = bin2hex(b_r)   #再转回16进制
    return h

str1="0123456789abcdefABCDEF"
# 符合上面条件做处理,否则原样打印
for i in la:
    if i in str1:
        print(int_process(i),end='')   
    else:
        print(i,end='')


全部评论

相关推荐

03-26 13:44
南华大学 Java
在看面经的花生米很野蛮:这种情况下你当然要回答,你也是吗!!!!我超喜欢他的XXXXX
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 11:43
春招失败、父母离婚,好像我的人生一团糟,一年来压力大到常常崩溃。不知道能跟谁聊,朋友其实对我非常好,但是她无意中表达出来的家庭幸福都会刺痛到我……和ai聊天,我的未来在更高处,不在楼下,忍不住爆哭😭
youngfa:害,妹妹,我是一个研究生(很上进很想找到好工作的那种),但去年因为生病回家休养错过了秋招(当时对我的冲击也是非常大的),这学期返校来了也是把论文盲审交了后才开始找工作,现在也是一个offer没有,但我就没有像你一样把这个阶段性的事情绑定到人生上,人生不仅很长,也很广阔,先停下来,放松一下哦。不要被外部环境灌输的思维操控了,好好爱自己!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务