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

字符串合并处理

https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f

btb = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']   # 设置映射列表

s = list("".join(input().split()))                                        # 接受键盘输入,使用str.join 讲split后的列表合并成一个字符串,然后使用list转换成合并后的列表
s[::2]= sorted(s[::2])                                                     # 使用sorted 按照字典序列对原始列表中的偶数下表元素排序,【偶数子列表:从0开始,每隔2个取到列表排序】
s[1::2]=sorted(s[1::2])                                                  # 使用sorted 按照字典序列对原始列表中的奇数下表元素排序,【奇数子列表:从1开始,每隔2个取到列表排序】

res = ''                                                                         # 用于保存结果的变量
for i in s:                                                                      # 遍历排好序的字符列表
    if i.upper() in btb:                                                    # 对在btb列表中的元素需要做转换
        ten_v = int(i, 16)  # to 16                                     # 转换成16进制
        bin_v = bin(ten_v)                                               # 转换成二进制
#       new_rbin_v=format(ten_v,'b').rjust(4,'0')[::-1]     
        rbin_v = bin_v[bin_v.index('b') + 1:].rjust(4, '0') # 截取有效数字位,并做翻转(效率更高这种)
        new_rbin_v = rbin_v[::-1]      # reverse
        num = format(int(new_rbin_v, 2),'X')                  # 抓换成16 大写进制
        res += num                                                         # 拼接
    else:
        res+= i                                                               # 直接拼接
print(res)                                                                     # 输出结果

#华为笔试#
全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务