【刷题】华为笔试面试机考 [HJ30] - 字符串合并处理

news/2024/7/7 12:55:10

题目地址

  • 点击跳转

题目描述

按照指定规则对输入的字符串进行处理。

详细描述:

将输入的两个字符串合并。

对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符串中的位置。

对排序后的字符串进行操作,如果字符为‘0’——‘9’或者‘A’——‘F’或者‘a’——‘f’,则对他们所代表的16进制的数进行BIT倒序的操作,并转换为相应的大写字符。如字符为‘4’,为0100b,则翻转后为0010b,也就是2。转换后的字符为‘2’; 如字符为‘7’,为0111b,则翻转后为1110b,也就是e。转换后的字符为大写‘E’。

举例:输入str1为"dec",str2为"fab",合并为“decfab”,分别对“dca”和“efb”进行排序,排序后为“abcedf”,转换后为“5D37BF”

注意本题含有多组样例输入

输入描述:

本题含有多组样例输入。每组样例输入两个字符串,用空格隔开。

输出描述:

输出转化后的结果。每组样例输出一行。

示例1

输入

dec fab

输出

5D37BF

解题思路

1、合并输入的字符串
2、取奇偶位的两组字符串
3、将上面两个字符串排序
4、再次合并两个数组(按照各自原有位置)
5、查表替换

最后一步查表的话会方便很多,也更好理解一些。

代码

  • Python 3
def func():
    s = input().replace(' ', '')
    
    # 取奇偶位
    i = 0
    sj = ''
    so = ''
    for c in s:
        if i % 2 == 0:
            so += c
        else:
            sj += c
        i += 1
    
    # 分别排序
    so = ''.join(sorted(so))
    sj = ''.join(sorted(sj))
    
    # 排序后再次合并
    s = ''
    while True:
        s += so[:1]
        s += sj[:1]
        
        so = so[1:]
        sj = sj[1:]
        
        if not so and not sj:
            break
    
    # 查表
    dic1 = '0123456789abcdef'
    dic2 = '084C2A6E195D3B7F'
    
    r = ''
    for c in s:
        if c.lower() not in dic1:
            r += c
            continue
        
        r += dic2[dic1.find(c.lower())]
        
    print(r)

while True:
    try:
        func()
    except:
        break

http://www.niftyadmin.cn/n/4411692.html

相关文章

CMPP-SGIP协议设计与实现

移动梦网和联通在信都是构建在有中国特色的短信网关部件基础上的,亚信为中国移动设计的CMPP协议规范,中国联通的SGIP规范都是为这个短信网关提供的互联网接口标准,可以看出二者都是借鉴GSM SMPP协议的两种简化版。 CMPP提供了基于TCP的长连接…

【刷题】数据库SQL实战 [SQL01] - 查找最晚入职员工的所有信息

题目地址 点击跳转 题目描述 有一个员工employees表简况如下: 建表语句如下: CREATE TABLE employees ( emp_no int(11) NOT NULL, birth_date date NOT NULL, first_name varchar(14) NOT NULL, last_name varchar(16) NOT NULL, gender char(1) NOT NULL, hire_date dat…

【刷题】数据库SQL实战 [SQL02] - 查找入职员工时间排名倒数第三的员工所有信息

题目地址 点击跳转 题目描述 有一个员工employees表简况如下: 建表语句如下: CREATE TABLE employees ( emp_no int(11) NOT NULL, birth_date date NOT NULL, first_name varchar(14) NOT NULL, last_name varchar(16) NOT NULL, gender char(1) NOT NULL, hire_date dat…

【实现一套爬虫数据抓取平台】[3-5-02] CentOS 关闭超时进程

文章目录零、系列目录一、背景二、脚本代码三、解析执行步骤代码获取进程 pid获取进程的运行时间四、总结零、系列目录 写这套文章的时候,不会完全按照目录的顺序一篇一篇写, 大家可以到目录中直接找到对应的章节进行查看。 点我跳转 一、背景 在运行…

SMS短信开发技术

SMS短信开发技术总结--协议篇  现在提供短信服务的SP都需要接入到各个移动运营商,虽然作为短信来说是同过SMPP协议和移动的交换中心进行通信。但是为了提供信息服务,对各种业务进行业务管理,以及计费,因此每个移动运营商都开发了…

【实现一套爬虫数据抓取平台】[3-3-02] CentOS 设置定时任务/计划任务

文章目录0、系列目录1、应用场景2、周期性任务 - crontab安装 crontab创建任务参数解释其他命令3、一次性任务 - at安装 at创建任务查看任务删除任务时间参数4、总结0、系列目录 写这套文章的时候,不会完全按照目录的顺序一篇一篇写, 大家可以到目录中直…

Proxool 配置

一&#xff0e;Proxool 在hibernate 中的配置1&#xff0c; Hibernate的三种连接池设置C3P0、Proxool和DBCP以下三种连接都是以连接MySQl为例。 <!-- JDBC驱动程序 --> <property name"connection.driver_class">com.mysql.jdbc.Driver</property>…

c# websocket client java websocket server

实现功能&#xff1a;c# websocket 客户端 连接 java websocket 服务端 一&#xff0c;c# websocket 客户端 nuget websocketsharp-netstandard Program.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threadi…