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

字符串合并处理

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='')


全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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