题解 | #字符串合并处理#
字符串合并处理
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
#第一步,合并字符串
str1,str2 = input().split()
str = str1+str2
#第二步,完成排序
str3 = ''#偶串
str4 = ''#奇串
for i in range(len(str)):
if i % 2 == 0:
str3 += str[i]
else:
str4 += str[i]
list = []
list3 = sorted(str3)
list4 = sorted(str4)
for k in range(len(str)):
if k %2 == 0:#str的0号位放偶串的0号位
n = int(round(k/2))#round特性,0.5向下取整为0,以此类推
list.append(list3[n])
else:
list.append(list4[n])#str的1号位放奇串的0号位
new_str = ''.join(list)
#第三步,字符转化
for m in new_str:
try:
x = bin(int(m,16))[2::]#先把字符i,以十六进制转化为十进制,然后转化为二进制,注意二进制输出格式为Ob...所以切片2:
#大神补充,如果二进制不足4位用0补齐,类似十进制的1写为0001.
x = '0'*(4-len(x)) + x if len(x)<4 else x
x = x[::-1]#倒序切片,注意切片完为字符串
x = hex(int(x,2))[2::].upper()#先把切片二进制转十进制,然后转为十六进制后大写,注意十六进制输出格式为Ox...所以切片2:
print(x,end='')
except:
print(m,end='')
##这里用try except主要考虑,万一字符中存在无法转化进制的字符(例如G,他不存在于十六进制),就直接输出当前字符,不做转化
#引申 八进制输出为Oo。。。
#进制转化##悬赏#