华为机试-字符串合并处理

news2024/9/23 13:28:28

描述

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

详细描述

第一步:将输入的两个字符串str1和str2进行前后合并。如给定字符串 “dec” 和字符串 “fab” , 合并后生成的字符串为 “decfab”

第二步:对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标的意思是字符在字符串中的位置。注意排序后在新串中仍需要保持原来的奇偶性。例如刚刚得到的字符串“decfab”,分别对下标为偶数的字符’d’、‘c’、‘a’和下标为奇数的字符’e’、‘f’、'b’进行排序(生成 ‘a’、‘c’、‘d’ 和 ‘b’ 、‘e’ 、‘f’),再依次分别放回原串中的偶数位和奇数位,新字符串变为“abcedf”

第三步:对排序后的字符串中的’0’‘9’、‘A’‘F’和’a’~'f’字符,需要进行转换操作。
转换规则如下:
对以上需要进行转换的字符所代表的十六进制用二进制表示并倒序,然后再转换成对应的十六进制大写字符(注:字符 a~f 的十六进制对应十进制的10~15,大写同理)。
如字符 ‘4’,其二进制为 0100 ,则翻转后为 0010 ,也就是 2 。转换后的字符为 ‘2’。
如字符 ‘7’,其二进制为 0111 ,则翻转后为 1110 ,对应的十进制是14,转换为十六进制的大写字母为 ‘E’。
如字符 ‘C’,代表的十进制是 12 ,其二进制为 1100 ,则翻转后为 0011,也就是3。转换后的字符是 ‘3’。
根据这个转换规则,由第二步生成的字符串 “abcedf” 转换后会生成字符串 “5D37BF”。

数据范围:输入的字符串长度满足 1 \le n \le 100 \1≤n≤100

输入描述

样例输入两个字符串,用空格隔开。

输出描述

输出转化后的结果。
在这里插入图片描述

代码解析

# 合并
# 下标奇数和下标偶数分别排序
# 十六进制转二进制,二进制倒序后转十六进制

str1 = input().split()
str2 = str1[0] + str1[1]
str2 = [i for i in str2]  # 转成单个字符列表
list1 = []  # 存奇数索引的数
list2 = []  # 存偶数索引的数
for index, i in enumerate(str2):
    if index % 2 == 0:
        list2.append(i)
    else:
        list1.append(i)
list1 = sorted(list1, reverse=False)
list2 = sorted(list2, reverse=False)
count_1 = 0 # 偶数位索引
count_2 = 0 # 奇数位索引
for index, i in enumerate(str2):
    if index % 2 == 0:
        str2[index] = list2[count_1]
        count_1 += 1
    if index % 2 == 1:
        str2[index] = list1[count_2]
        count_2 += 1
str2 = "".join(str2)
# print(str2)
str2 = [i for i in str2]
new_str2 = []
for i in str2:
    # 如果是字母,并且不是十六进制的字母,保持原样,否则,按照规则进行转换
    if i.upper() not in ["A", "B", "C", "D", "E", "F"] and i.isalpha():
        new_str2.append(i)
    else:
        tep = (bin(int(i, 16))[2:])  # 先转成10进制,再转成2进制
        # 这题要补0
        if len(tep) == 3:
            tep = "0" + tep
        if len(tep) == 2:
            tep = "00" + tep
        if len(tep) == 1:
            tep = "000" + tep
        new = hex(int(tep[::-1], 2))[2:]
        if new.isalpha():
            new = new.upper()
        new_str2.append(new)

print("".join(new_str2))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/67461.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

拖拽式网页制作工具

拖拽式网页制作工具是什么,有什么优势,怎么使用? 拖拽式网页制作工具是什么: 它是一款可以帮助企业、机构、个体户快速搭建网站的一款工具,通过简单易上手的操作,免除学习代码、学习设计等繁琐步骤,利用工…

2022.12.2Treats for the Cows POJ - 3186(区间dp

原题链接&#xff1a;传送门 FJ has purchased N (1 < N < 2000) yummy treats for the cows who get money for giving vast amounts of milk. FJ sells one treat per day and wants to maximize the money he receives over a given period time. The treats are inte…

请不要直接拆除或更换旧光纤!Softing为您提供光纤以太网网络解决方案

Softing的Phoenix Digital光纤以太网网络冗余模块与传统光纤相兼容。通过使用Phoenix Digital模块&#xff0c;用户无需更换传统光纤和远程I/O设备。 升级工业网络是一项复杂的工作&#xff0c;用户需要耗费大量的时间、成本和其他资源来确保新建网络可以满足系统应用中的所有要…

Excel - 插入空白行

简单的插入一个空白行&#xff0c;只需选中一行&#xff0c;右键&#xff0c;选择插入一行即可。 如果要一次插入多个空行&#xff0c;可以按住Ctrl键&#xff0c;然后逐个选中想要插入的行&#xff0c;然后执行插入操作&#xff0c;如下所示&#xff1a; 选中张三、王五、田七…

二叉树的基本运算

二叉树的基本运算 上一讲我们已经讲了创建二叉树,所以这一讲,我们来说一下二叉树的基本运算方法,为以后二叉树的运用打下基础: (1)查找节点FindNode(*b,x): 在二叉树b中寻找data域值为x的节点,并返回指向该节点的指针 (2)找孩子节点LchildNode和Rchild-Node: 分别求二叉树中节…

逆傅里叶变IFFT原始信号恢复方法研究-附Matlab代码

一、原始信号模拟 现实中&#xff0c;由于得到的信号都是实数序列。设有实数序列x(n)&#xff0c;如下图所示 图1 原始信号 对应Matlab如下&#xff1a; %% 矩形波 N33; % 设置N长 xzeros(1,N); % 构成矩形波形 x(7:27)1; figur…

JavaSe-JAVA的多态

用一句话概括就是&#xff1a;事物在运行过程中存在不同的状态。先以教科书般举例说明,下文再举一个花木兰替父从军的例子帮助大家理解. 多态的存在有三个前提: 1.要有继承关系 2.子类要重写父类的方法 3.父类引用指向子类对, 但是其中又有很多细节需要注意。首先我们定义两…

java代码审计

java代码审计 SQL注入分析 1、JDBC 1、1&#xff08;statement&#xff09; public String jdbcVul(String id) {StringBuilder result new StringBuilder();try {Class.forName("com.mysql.cj.jdbc.Driver");Connection conn DriverManager.getConnection(db_u…

Qt OpenGL(二十六)——Qt OpenGL 核心模式-旋转的彩色三角形

Qt OpenGL(二十六)——Qt OpenGL 核心模式-旋转的彩色三角形 上篇文章我们把三角形上色成了,彩色的三角形: 离我们想要绘制的图形,旋转的三角形,又近了一步,本篇文章就让这个彩色的三角形旋转起来。不过从上篇开始使用的代码就是Qt封装的类了,不过也是核心模式的,步…

【Qt】从开源项目QCAD中学习如何增强QLineEdit控件

1 背景 Qt5 中有个很基本的单行输入框控件&#xff0c;就是 QLineEdit&#xff0c;类似于HTML中的input标签。 在QCAD开源项目中&#xff0c;其主界面中有个供用户输入绘图命令的单行输入框控件&#xff0c;其可以实现类似 Linux 终端的简单效果&#xff1a; 上键显示最近的…

基于jsp+ssm的家政服务系统-计算机毕业设计

项目介绍 作为一个家政服务系统&#xff0c;它就面对着许多用户的操作&#xff0c;而这些用户对系统的操作应该有所不同&#xff0c;所以我们在设计时必须要对不同的用户设立不同的的权限在本系统中&#xff0c;我考虑了3种权限&#xff08;管理员&#xff0c;雇主&#xff0c…

盘点JDK中基于CAS实现的原子类

前言 JDK中提供了一系列的基于CAS实现的原子类&#xff0c;CAS 的全称是Compare-And-Swap&#xff0c;底层是lock cmpxchg指令&#xff0c;可以在单核和多核 CPU 下都能够保证比较交换的原子性。所以说&#xff0c;这些原子类都是线程安全的&#xff0c;而且是无锁并发&#x…

国内设计师经常逛的5个素材网站

设计师必备的5个设计素材网站&#xff0c;免费下载&#xff0c;还可商用&#xff0c;再也不用担心侵权了。1、菜鸟图库 https://www.sucai999.com/?vNTYwNDUx菜鸟图库是一个素材量非常丰富的网站&#xff0c;网站聚合了平面、UI、淘宝电商、高清背景图、图片、插画等高质量素材…

六 游戏基础知识和SHAPE

显示对象 在Egret渲染架构设计中&#xff0c;我们将能够参与渲染的对象抽象为显示对象 Egret引擎中所有的显示对象类型表格&#xff1a; 坐标系 egret游戏中的的坐标原点位于舞台的左上角 显示列表与容器类 所有的容器全部继承于 DisplayObjectContainer类 DisplayObje…

世界杯主题系列-用Scratch制作足球比赛小游戏,源码分享啦

目录 一&#xff1a;两个小游戏的预览图效果图&#xff1a; 二&#xff1a;简单版双人足球赛源码&#xff1a; 三&#xff1a;复杂多人控制版足球赛源码 先来动态gif效果图&#xff1a; 四年一度的世界杯正在卡塔尔火热进行中&#xff01; 在绿茵场内&#xff0c;有胜利的…

Reids实战——分布式锁优化(Lua脚本)

1 基于Redis分布式锁的问题 先来看看之前分布式锁的实现。 这个基于Redis的分布式锁仍然有着一个问题&#xff0c;那就是误删锁的问题。 简单的来说&#xff0c;就是当第一个线程&#xff0c;也就是线程1&#xff0c;拿到锁后&#xff0c;但由于本身业务复杂&#xff0c;而导…

gvim写verilog环境搭建——将文本编辑器客制化定义为你自己的IDE

本文将详细描述将vim变成写Verilog代码的IDE客制化的实现过程&#xff0c;同时最后提供自己的环境。实现的过程中有使用自己写的&#xff0c;也有参考借鉴其他同学进行一定的修改&#xff0c;也有直接使用插件实现的相关功能。对应的功能实现部分均会给出相应的参考与插件地址等…

基于jsp+ssm的网上图书商城-计算机毕业设计

项目介绍 本系统的用户群体分为管理员、会员两类。不同的身份拥有不同的职责和权限。管理员的职能包括&#xff1a;图书管理、会员管理、订单信息审核、个人信息维护等 该网上书城系统应该具备有图书添加、图书信息修改、用户浏览图书、用户搜索图书、图书购买和订购等功能&a…

为什么在高速PCB设计当中信号线不能多次换孔

大家在进行PCB设计时过孔肯定是要接触的&#xff0c;那么大家知道过孔对于我们PCB的信号质量影响有多大吗&#xff1f; 在搞清楚上面这个这个问题之前我们先给大家介绍一下我们在PCB设计时过孔应该如何选取。 一般过孔种类有以下三种可以进行选择&#xff1a;&#xff08;单位是…

00后会不会改变软件测试行业现状?

不可置否&#xff0c;从年开始&#xff0c;00后开始进入职场&#xff0c;开始他们漫长的职业生涯啦。 作为经历过90后改变职场规则的80后的老人们&#xff0c;又要瑟瑟发抖啦。 因为在90后之后&#xff0c;00后又开始整顿职场了。 80后&#xff0c;上有老下有小&#xff0c;为…