OD机试题(四)

ops/2024/11/20 13:30:43/

文章目录

      • 1. 字符创合并处理
      • 2. 单词倒排:
      • 3. 整数与IP地址间的转换

1. 字符创合并处理

描述:按照指定规则对输入的字符串进行处理。
详细描述:
第一步:
将输入的两个字符串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:
输入:dec fab
输出:5D37BF
示例2:
输入:ab CD
输出:3B5D
示例3:
输入:123 15
输出:88C4A
参考代码:

python">import sys
input_list = []
for line in sys.stdin:input_list = line.split()input_str = "".join(input_list)
a_list = [ input_str[_] for _ in range(0,len(input_str),2)]
a_list.sort()
b_list = [ input_str[_] for _ in range(1,len(input_str),2)]
b_list.sort()new_list = []
length = len(a_list) if len(a_list) >= len(b_list) else len(b_list)
i = 0
while i < length:if i < len(a_list):new_list.append(a_list[i])if i < len(b_list):new_list.append(b_list[i])i += 1
result_list = []
tmp_list = ['0','1','2','3','4','5','6','7','8','9','A','B','C'
,'D','E','F','a','b','c','d','e','f']
for i in new_list:if i in tmp_list:i_16 = int(i,16)i_10 = list(bin(int(i_16))[2:].rjust(4,'0'))i_10.reverse()i_10_str = str(int(''.join(i_10),2))i_16_str = hex(int(i_10_str))[2]if i_16_str.islower():result_list.append(i_16_str.upper())elif i_16_str.isnumeric():result_list.append(i_16_str)else:result_list.append(i)
print(''.join(result_list))

2. 单词倒排:

描述:对字符串中的所有单词进行倒排。
说明:
1、构成单词的字符只有26个大写或小写英文字母;
2、非构成单词的字符均视为单词间隔符;
3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
4、每个单词最长20个字母;
输入描述:
输入一行,表示用来倒排的句子
输出描述:
输出句子的倒排结果
示例1:
输入:I am a student
输出:student a am I
示例2:
输入:$bo*y gi!r#l
输出:l r gi y bo
参考代码:

python">import sys
for line in syt.stdin:tmp = ''for index,ele in enumerate(line):if not (ele,islower() or ele.isupper()):tmp += ' 'else:tmp += eletmp_list = tmp.split()tmp_list.reverse()print(" ".join(tmp_list))

3. 整数与IP地址间的转换

描述:
原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成
一个长整数。
举例:一个ip地址为10.0.3.193
每段数字 相对应的二进制数
10 00001010
0 00000000
3 00000011
193 11000001
组合起来即为:00001010 00000000 00000011 11000001,转换为10进制数就是:167773121,即该IP地址转换后的数字就是它了。
输入描述:
输入
1 输入IP地址
2 输入10进制型的IP地址
输出描述:
输出
1 输出转换成10进制的IP地址
2 输出转换后的IP地址
示例:
输入:
10.0.3.193
167969729
输出:
167773121
10.3.3.193
参考代码:

python">import sys
for line in sys.stdin:a = line.split()[0]if '.' in a:a_list = a.split('.')a_bin_list =  [ bin(int(ele))[2:].rjust(8,'0') for ele in a_list ]print(int(''.join(a_bin_list),2))else:result_str = bin(int(line))[2:]count_0 = 32 - len(result_str)result_str = "{}{}".format('0'*count_0,result_str)result_list = []for i in range(0,len(result_str) // 8 ):tmp_str = result_str[i * 8:(i + 1)*8]result_list.append(str(int(tmp_str,2)))r = '.'.join(result_list)print(r)

http://www.ppmy.cn/ops/4360.html

相关文章

【ROS2笔记六】ROS2中自定义接口

6.ROS2中自定义接口 文章目录 6.ROS2中自定义接口6.1接口常用的CLI6.2标准的接口形式6.3接口的数据类型6.4自定义接口Reference 在ROS2中接口interface是一种定义消息、服务或动作的规范&#xff0c;用于描述数据结构、字段和数据类型。ROS2中的接口可以分为以下的几种消息类型…

springboot 启动非web应用

问题描述 非web应用&#xff0c;启动完成自动退出 问题原因 因为任务完成了&#xff0c;所以系统退出了。需要给spring一个任务&#xff0c;而且这个任务无法解决 包括&#xff1a; web定时任务一个无法完成的任务 解决方案 其中一个是&#xff1a; 非web不自动退出 注意…

mysql 查询实战3-解答

对mysql 查询实战3-题目&#xff0c;进行一个解答 11、查询每⽉产品交易与退款情况 目标&#xff1a;查询每⽉产品交易&#xff08;交易总额&#xff0c;交易数&#xff09;与退款情况&#xff08;退款总额&#xff0c;退款数&#xff09; 1&#xff0c;先把日期格式化 使用 E…

GitHub-single_file_libs

GitHub - nothings/single_file_libs: List of single-file C/C libraries. 翻译&#xff08;英语很差&#xff09;&#xff08;自己翻着玩&#xff09;了解 拥有最小依赖的单文件公共领域/开源库 我是 许多 single-file C/C public domain libraries. 的作者。我不是唯一一…

STM32之HAL开发——CubeMX配置串行Flash文件系统

配置流程 在开始配置FATFS前&#xff0c;需要提前配置好RCC的时钟&#xff0c;以及时钟的频率&#xff0c;另外还要配置好Debug选项&#xff08;选择串行&#xff09; 选项介绍 文件系统适用于SD卡&#xff0c;Disk磁盘等&#xff0c;需要我们将对应的驱动打开才可以使用。 …

【iOS】——SDWebImage源码学习

文章目录 一、SDWebIamge简介二、SDWebImage的调用流程SDWebImage源码分析1.UIImageViewWebCache层2.UIViewWebCache层3.SDWebManager层4.SDWebCache层5.SDWebImageDownloader层 一、SDWebIamge简介 SDWebImage是iOS中提供图片加载的第三方库&#xff0c;可以给UIKit框架中的控…

人教版高中所有单词

提前教孩子背背单词&#xff0c;本文整理人教版高中所有单词&#xff0c;并根据字母排序&#xff0c;附带了词源学&#xff0c;词缀&#xff0c;词根&#xff0c;本文将常态更新&#xff0c;直到所有单词解释完成 ABCDEFGHIJKLMNOPQRSTUVWXYZ A AD公元 AIDS ANC非国大&#xf…

【在本机上部署安装禅道详细操作步骤2024】

1、进入禅道官网&#xff0c;选择开源版进行下载&#xff1a;禅道下载 - 禅道开源项目管理软件 2、根据自身电脑环境选择合适的版本&#xff0c;此处是windows版本&#xff1a; 3、双击打开下载好的.exe安装包-选择安装目录-【Extract】-然后就等着安装完成就行了 4、安装完成…