分类:字符串、进制转换
知识点:
-
获取偶数下标的字符 even_chars = my_str[::2]
-
获取奇数下标的字符 odd_chars = my_str[1::2])
-
翻转字符串 reversed_str = my_str[::-1]
-
二进制转十进制 num = int(reversed_binary, 2)
-
十进制转十六进制 format(num, 'X')
题目来自【牛客】
def merge_strings(str1, str2):
merged_str = str1 + str2 # 合并两个字符串
return merged_str
def sort_string(s):
even_chars = sorted(s[::2]) # 获取偶数下标的字符并排序
odd_chars = sorted(s[1::2]) # 获取奇数下标的字符并排序
sorted_str = "" # 初始化排序后的字符串
for i in range(len(s)):
if i % 2 == 0: # 如果下标是偶数
sorted_str += even_chars[i // 2] # 添加排序后的偶数下标字符
else: # 如果下标是奇数
sorted_str += odd_chars[i // 2] # 添加排序后的奇数下标字符
return sorted_str
def convert_characters(s):
converted_str = ""
for char in s:
if char.isdigit() or 'a' <= char <= 'f' or 'A' <= char <= 'F': # 如果是需要转换的字符
# 大小写a对应的16进制都是10
binary_str = bin(int(char, 16))[2:].zfill(4) # 转为二进制并填充为4位
# 翻转二进制字符串
reversed_binary = binary_str[::-1]
# 转回为大写十六进制字符
converted_char = format(int(reversed_binary, 2), 'X')
converted_str += converted_char
else:
converted_str += char # 其他字符直接添加
return converted_str
# 输入
input_str = input()
str1, str2 = input_str.split()
# 处理和转换
merged_string = merge_strings(str1, str2)
sorted_string = sort_string(merged_string)
converted_result = convert_characters(sorted_string)
# 输出
print(converted_result)