题解 | #字符串合并处理#
字符串合并处理
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
while True: try: s = list(input().replace(' ','')) #第一步合并把空格去掉并且变成list s[::2] = sorted(s[::2]) s[1::2] = sorted(s[1::2]) #第二步直接奇数位偶数位排序 只有变成list才能排 #第三步转换字符 res = '' for i in s: if '0' <= i <= '9' or 'a' <= i <= 'f' or 'A' <= i <= 'F': b = bin(int(i,16))[2:] #注意bin返回的有0b二进制的前缀 b = '0' * (4-len(b)) + b if len(b) < 4 else b #不够四位要补0 b = b[::-1] b= hex(int(b,2))[2:].upper() res += b else: res += i print(res) except: break
按照题意一步步去做就行:
第一步:合并一下输入把它变成list,这里用了一个replace('..','..') 把空格给取缔了
第二步:用切片直接sorted,我试了一下,貌似只有输入变成了list,才能这样直接奇偶位直接排
第三步:来一个遍历,对于目标字符‘0-9’,‘a-f’,‘A-F’中的i,要先变成二进制,反转,在翻转之前还要补位直接用.rjust(4,'0')就好了,然后再变成十进制和用hex()将十进制换成16进制
对于不在目标字符里的,直接不变的加到res里就行了