首页 > 试题广场 >

字符串合并处理

[编程题]字符串合并处理
  • 热度指数:192864 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

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

详细描述:

第一步:将输入的两个字符串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

说明

合并后为abCD,按奇数位和偶数位排序后是CDab(请注意要按ascii码进行排序,所以C在a前面,D在b前面),转换后为3B5D          
示例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 展开全文
头像 水木清华_AI
发表于 2020-03-23 17:55:41
/* 本文系「人工智能安全」(微信公众号)原创,转载请联系本文作者(同博客作者)。 欢迎你转发分享至朋友圈,并给予「关注、星标、点赞」三连支持。互相欣赏,互相批判。 我是一名有诗人气质的网络安全工程师 期待与你的思想交流碰撞出智慧的花火 水木清华 2020-03-23 字符串合并处理 */ #inc 展开全文
头像 牛客568583966号
发表于 2022-03-11 17:51:24
import java.util.*; public class Main {     public static void main(String[] args) {         Scanner sc = new Scanner(S 展开全文
头像 牛客931552190号
发表于 2021-10-11 09:26:29
while True:     try:         s1, s2 = input().split()         s = list(s1 + s2)       展开全文
头像 无敌小小超人
发表于 2021-01-28 11:28:21
题目中有几个没交代清楚的: 1.只用处理0-9和a-f 的字符,除此之外不用处理直接添加 2.如果转换为2进制后不够4位,需要末尾补零。 处理过程: 1.合并两字符串 2.按奇,偶位分别排序 3.再合并字符串 4.处理转换并返回    展开全文
头像 牛客155969019号
发表于 2021-10-15 17:15:22
while True: try: str = ''.join(input().split()) except: break else: # 第二步奇偶排列 oushu = [str[x] for x in ran 展开全文
头像 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 展开全文