题解 | #字符串合并处理#

字符串合并处理

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里就行了

全部评论

相关推荐

03-29 12:10
门头沟学院 C++
挣K存W养DOG:散漫消极者淘汰,一眼坑爹。实习几个月转正的时候说你加班太少,能力还行态度不够积极裁了,马上老实。
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务