题目中有几个没交代清楚的:
1.只用处理0-9和a-f 的字符,除此之外不用处理直接添加
2.如果转换为2进制后不够4位,需要末尾补零。
处理过程:
1.合并两字符串
2.按奇,偶位分别排序
3.再合并字符串
4.处理转换并返回
4.1为节省时间0不用转
4.2 16进制转2进制并反转
4.3 不够4位要末尾补零
4.4 再转换回去
4.5 拼接
def translate(org_str): trans_str = '' append = '0000' for i in org_str: #优化,为零的话不用处理 if i == '0' : trans_str += i continue #只用转换0-9和a-f的字符 if i.isdigit() or (i.isalpha() and i.upper()<'G'): #16进制转2进制并反转字符 trch = str(bin(int(i,16)))[:1:-1] #不够4位要补零 if len(trch)<4 : trch += append[:4-len(trch)] #2进制转16进制并大写 trans_str += str(hex(int(trch,2)))[2::].upper() else : trans_str += i return trans_str while True: try: #获取字符串 string = "".join(input().split()) #按奇数位和偶数位分开字符串并排序 a = sorted(string[::2]) b = sorted(string[1::2]) org_str = '' i = 0 #合并字符串,只会有a串长于b串的情况,或者两串长度相等 for i in range(len(a)): if i >= len(b): org_str += a[i] break else : org_str += a[i]+b[i] i+=1 print(translate(org_str)) except: break