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

字符串合并处理

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

import sys
st = input().replace(' ','')  #字符串拼接,去除空格
st_odd = [x for i,x in enumerate(st) if i%2==1]  #奇数位字符串列表
st_odd = sorted(st_odd) #排序奇数位字符串
st_even = [x for i,x in enumerate(st) if i%2==0] #偶数维字符串列表
st_even = sorted(st_even) #排序偶数位字符串
stl = ''  #初始化待拼接字符串
for i in range(len(st)):
    if i%2==1:
        stl += str(st_odd[int((i-1)/2)])  #拼接排序后的奇数位字符串
    else:
        stl += str(st_even[int(i/2)])  #拼接排序后的偶数位字符串
res = ''  #初始化结果字符串
for i in range(len(stl)):
    if stl[i] in '0123456789ABCDEFabcdef':  #如果字符串每位在0-9a-f
        r = bin(int(stl[i],16))[2:]  #转入二进制,去掉开头的0b
        r = '{:0>4s}'.format(r)  #补齐4位,缺失补0
        r = r[::-1]  #反转字符串
        r = hex(int(r,2))[2:]  #转入16位数值,去掉开头的0h
        r = r.upper()  #所有字母大写
        res += str(r)  #拼接结果
    else:
        res += str(stl[i])  #如果字符不在0-9a-f中,保持原样。
print(res)

全部评论

相关推荐

专业嗎喽:个人信息名字太大,合到电话邮箱那一栏就行,有党员写过党,剩下其他全删,站空太大了 把实习经历丰富,放最前面,然后是个人评价,技能之类的,然后是学校信息。项目经历最后面,可以就选一个自己擅长的。 现在是学校不是92就扣分的,没必要放前面。 然后现在看重实习经历>竞赛经历(校园经历)>课程项目经历
点赞 评论 收藏
分享
12-28 09:59
复旦大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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