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