题解 | #字符串合并处理# 左对齐 右对齐 中心对齐

字符串合并处理

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

import re

while 1:
    try:
        s=input().split()
        s_join=s[0]+s[1]  # decfab

        # 下标为奇数的字符和下标为偶数的字符分别按ascii码从小到大排序 d c a   e f b
        # abcedf
        even,odd='',''
        for i in range(len(s_join)):
            if i%2==1:
                odd += s_join[i]
            elif i%2==0:
                even += s_join[i]
        even1=sorted(even)
        odd1=sorted(odd)

        s_join1=''
        for i in range(min(len(even1),len(odd1))):
            s_join1 += even1[i]+odd1[i]

        if len(even1)>len(odd1):
            s_join1 += even1[-1]
        elif len(even1)<len(odd1):
            s_join1 += odd1[-1]

        # 转换:每个i,16转2,不足4位需在前面补齐0,倒序,转16
        #trans=bin(int(s_join1,16))[2:][::-1] # 先转10,再转2,去掉0b,再倒序,str
        trans=''
        for i in s_join1:
            if re.search(r'[0-9a-fA-F]',i):
			# re.search 扫描整个字符串并返回第一个成功的匹配,匹配失败则返回None
                trans += hex(int(bin(int(i,16))[2:].rjust(4,'0')[::-1],2))[2:].upper()
            else:
                trans += i
        
        print(trans)
        
    
    except:
        break

# Eqr v9oEb12U2ur4xu7rd931G1f50qDo
# 8084842CAE9B9G7D7BUFooqqrrrvuxu

'''
n='4A'
print(bin(int(n,16)))
print(n.rjust(4,'0'))
'''

'''
import re

# 构造函数加密字符,如果是[0-9A-Fa-f]则按规则返回加密值,否则返回原始值
def encrypt(x):
    if re.search(r'[0-9A-Fa-f]', x):
        return hex(int(bin(int(x, 16))[2:].rjust(4, '0')[::-1], 2))[2:].upper()
        """
        1. int(x, 16) - 将字符x转成16进制
        2. bin(int(x, 16))[2:].rjust(4,'0')[::-1] - 继续将十六进制转成二进制,并去除二进制开头"0b",如果二进制长度小于4,则在前面补0至四位,然后再倒序。
        比如bin(int('7', 16))输出0b111,[2:]去除0b后为111,rjust(4,'0')左侧补0则变为0111,[::-1]倒序后变为二进制的1110
        3. hex(int(i,2)[2:].upper() - 其中i表示注释2的内容。这一步是将上一步获取的二进制转成十六进制,并去除开头的"0x",最后再将其转成大写。
        """
    else:
        return x

while True:
    try:
        a = list(input().replace(" ", "")) # 去除输入中的空格,并将输入的字符处理成列表
        a[::2] = sorted(a[::2])  # 奇数位置从小到大排序
        a[1::2] = sorted(a[1::2])  # 偶数位置从小到大排序
        res = ""
        for i in a:
            res += encrypt(i) # 调用加密函数,遍历输出结果
        print(res)
    except:
        break

'''



S.ljust(width,[fillchar]) 
#输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格。 
S.rjust(width,[fillchar]) #右对齐 
S.center(width, [fillchar]) #中间对齐 
S.zfill(width) #把S变成width长,并在右对齐,不足部分用0补足 
全部评论

相关推荐

小红书 后端开发 总包n+8w+期权
点赞 评论 收藏
分享
伟大的烤冷面被普调:暨大✌🏻就是强
点赞 评论 收藏
分享
过往烟沉:我说什么来着,java就业面就是广!
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务