题解 | #字符串合并处理#
字符串合并处理
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='')
