题解 | #字符串合并处理#2023/2024华为笔试机考

字符串合并处理

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

def reverse_hex(ch):
    num = int(ch, 16)
    binary_str = bin(num)[2:].zfill(4)
    reversed_binary_str = binary_str[::-1]
    reversed_num = int(reversed_binary_str, 2)
    return hex(reversed_num).upper()[2:]

def main():
    str1, str2 = input().split()
    combined_str = str1 + str2

    even_chars = sorted(combined_str[::2])
    odd_chars = sorted(combined_str[1::2])
    
    sorted_str = ''.join([even_chars[i//2] if i % 2 == 0 else odd_chars[i//2] for i in range(len(combined_str))])

    result = ''
    for ch in sorted_str:
        if '0' <= ch <= '9' or 'A' <= ch <= 'F' or 'a' <= ch <= 'f':
            result += reverse_hex(ch)
        else:
            result += ch

    print(result)

if __name__ == "__main__":
    main()

每天一道编程题

下面是对这个问题的解决方案:

  1. 定义一个函数reverse_hex,输入一个十六进制字符,输出翻转后的十六进制字符。在函数内部,首先将输入的十六进制字符转换为对应的十进制数,然后将十进制数转换为二进制字符串,翻转二进制字符串,再将翻转后的二进制字符串转换为十进制数,最后将十进制数转换为大写的十六进制字符并返回。
  2. 在主函数中,从输入中读取两个字符串str1和str2。
  3. 将str1和str2合并为一个字符串combined_str。
  4. 对合并后的字符串combined_str进行处理:对下标为奇数的字符和下标为偶数的字符分别进行排序。可以使用列表推导式提取奇数和偶数下标的字符,然后使用Python的内置函数sorted()进行排序。将排序后的奇数和偶数下标的字符列表依次插入到一个新列表中。将新列表转换为字符串。
  5. 对处理后的字符串进行转换:遍历字符串中的每个字符,如果字符是'0''F'或'a'~'f',则调用reverse_hex函数进行转换。将转换后的字符添加到一个新字符串中。
  6. 输出转换后的字符串。

这个程序使用了Python的字符串处理和列表操作功能,通过多个步骤对输入的字符串进行处理和转换。在处理过程中,我们首先合并两个输入字符串,然后对合并后的字符串进行排序和转换操作,最后输出处理后的字符串。

全部评论

相关推荐

05-29 20:34
门头沟学院 C++
KarlAllen:得做好直接春招的准备。学历差的话,一是面试要求会比学历好的严格不少,二是就算面试通过了也会被排序。总之暑期和秋招对于学历差的就是及其不友好
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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