题解 | #字符串合并处理# 左对齐 右对齐 中心对齐
字符串合并处理
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补足

