首页 > 试题广场 >

字符串合并处理

[编程题]字符串合并处理
  • 热度指数:215050 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}定义“调整”操作为,对于一个十进制数字,将其转换为二进制数,翻转,再转换为十六进制数(大写)。例如,(\texttt{4})_{10} 对应的二进制数为 (\texttt{100})_2 ,翻转后得到 (\texttt{001})_2 ,再转换为十六进制数为 (\texttt{1})_{16}

\hspace{15pt}对于给定的仅由小写字母 \texttt{a-f} 、大写字母 \texttt{A-F} 、数字 \texttt{0-9} 构成的字符串 st ,请按照以下步骤进行处理:
\hspace{23pt}\bullet\,第一步,将 st 合并,形成一个新字符串 u
\hspace{23pt}\bullet\,第二步,将 u 中奇数位字符从小到大进行排序,随后将偶数位字符也从小到大进行排序,得到 u'
\hspace{23pt}\bullet\,第三步,对 u' 中的字符依次转换为十进制数,随后执行“调整”操作。
\hspace{15pt}输出最终的字符串。

输入描述:
\hspace{15pt}在一行上输入两个长度 1 \leqq {\rm length}(s), {\rm length}(t) \leqq 100 ,仅由小写字母 \texttt{a-f} 、大写字母 \texttt{A-F} 、数字 \texttt{0-9} 构成的字符串 st ,代表待处理的字符串。


输出描述:
\hspace{15pt}在一行上输出一个字符串,代表最终的字符串。
示例1

输入

dec fab

输出

5D37BF

说明

\hspace{15pt}在这个样例中,第一步合并后得到 u = \texttt{ ;第二步,排序得到 u' = \texttt{ ;随后,按位转换为十进制数,并执行“调整”操作:
\hspace{23pt}\bullet\,对于第一个字符 (\texttt{ ,其十进制数为 (10)_{10} ,二进制数为 (\texttt{1010})_2 ,翻转后得到 (\texttt{0101})_2 ,再转换回十六进制数为 (\texttt{5})_{16}
\hspace{23pt}\bullet\,对于第二个字符 (\texttt{ ,翻转后得到 (\texttt{1101})_2=(\texttt{D})_{16}
\hspace{23pt}\bullet\,对于第三个字符 (\texttt{ ,翻转后得到 (\texttt{0011})_2=(\texttt{3})_{16}
\hspace{23pt}\bullet\,对于第四个字符 (\texttt{ ,翻转后得到 (\texttt{0111})_2=(\texttt{7})_{16}
\hspace{23pt}\bullet\,对于第五个字符 (\texttt{ ,翻转后得到 (\texttt{1011})_2=(\texttt{B})_{16}
\hspace{23pt}\bullet\,对于第六个字符 (\texttt{ ,翻转后得到 (\texttt{1111})_2=(\texttt{F})_{16}
示例2

输入

ab CD

输出

3B5D

说明

\hspace{15pt}在这个样例中,第一步合并后得到 u = \texttt{ ;第二步,排序得到 u' = \texttt{ 。需要特别注意的是,这里的排序是按照 \sf{Ascii} 码表的顺序进行排序的。
示例3

输入

123 15

输出

88C4A
头像 芳时易度
发表于 2021-07-14 22:00:05
import re # 构造函数加密字符,如果是[0-9A-Fa-f]则按规则返回加密值,否则返回原始值 def encrypt(x):     if re.search(r'[0-9A-Fa-f]', x) 展开全文
头像 请叫我豆哥
发表于 2019-12-15 00:06:13
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Arrays; impo 展开全文
头像 牛客568583966号
发表于 2022-03-11 17:51:24
import java.util.*; public class Main {     public static void main(String[] args) {         Scanner sc = new Scanner(S 展开全文
头像 水木清华_AI
发表于 2020-03-23 17:55:41
/* 本文系「人工智能安全」(微信公众号)原创,转载请联系本文作者(同博客作者)。 欢迎你转发分享至朋友圈,并给予「关注、星标、点赞」三连支持。互相欣赏,互相批判。 我是一名有诗人气质的网络安全工程师 期待与你的思想交流碰撞出智慧的花火 水木清华 2020-03-23 字符串合并处理 */ #inc 展开全文
头像 牛客931552190号
发表于 2021-10-11 09:26:29
while True:     try:         s1, s2 = input().split()         s = list(s1 + s2)       展开全文
头像 牛客155969019号
发表于 2021-10-15 17:15:22
while True: try: str = ''.join(input().split()) except: break else: # 第二步奇偶排列 oushu = [str[x] for x in ran 展开全文
头像 无敌小小超人
发表于 2021-01-28 11:28:21
题目中有几个没交代清楚的: 1.只用处理0-9和a-f 的字符,除此之外不用处理直接添加 2.如果转换为2进制后不够4位,需要末尾补零。 处理过程: 1.合并两字符串 2.按奇,偶位分别排序 3.再合并字符串 4.处理转换并返回    展开全文
头像 kykx_
发表于 2021-04-21 16:00:46
每次来牛客做题都是来爬坑了。。。坑坑更健康!!这题目描述漏了几个关键信息:1.合并后的字符串按照奇偶位拆分后分别排序,排序后原合并字符串中的奇数位在新拼接的字符串中也只能是奇数位,原合并字符串中的偶数位在新拼接的字符串中也只能是偶数位;2.反转的时候只处理十六进制样式的字符,其他字符保持不变; #i 展开全文
头像 Python_zhang
发表于 2022-01-29 19:47:51
#include <stdio.h> #include <string.h> //读取,选择排序 //字典序列 //需要注意题目中用例会出现非A-F字母,原样输出即可 int main() { char str1[101]; char str2[101]; 展开全文
头像 为什么机器不学习
发表于 2021-01-07 16:31:29
java的进制转换在Integer中都有提供相应的方法,当然自己写也不难。 import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new S 展开全文