题解 | #字符串合并处理#
字符串合并处理
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
#include <stdio.h>
#include <string.h>
#include <ctype.h>
/*
*1、使用变长数组,注意,声明变长数组的变量值一旦确定将不能改变
*2、十六进制数转换时使用了一个映射数组,由于十六进制数数目有限,映射数组效率更高
*/
int main() {
int len,index;
char a[101]={0},b[101]={0},tmp;
char reverse[16]={'0','8','4','C','2','A','6','E','1','9','5','D','3','B','7','F'};
while (scanf("%s %s", a, b) != EOF) {
len=strlen(a)+strlen(b);
char input[len];
memset(input,0,len+1);
memcpy(input,a,strlen(a));
memcpy(&input[strlen(a)],b,strlen(b));
for(int i=0;i<len;i=i+2)
{
index=i;
for(int j=i+2;j<len;j=j+2)
{
if(input[index]>input[j])
{
index=j;
}
}
tmp=input[index];
input[index]=input[i];
input[i]=tmp;
}
for(int i=1;i<len;i=i+2)
{
index=i;
for(int j=i+2;j<len;j=j+2)
{
if(input[index]>input[j])
{
index=j;
}
}
tmp=input[index];
input[index]=input[i];
input[i]=tmp;
}
for(int i=0;i<len;i++)
{
if(input[i]>='0'&&input[i]<='9')
{
input[i]=reverse[input[i]-'0'];
}
else if(input[i]>='a'&&input[i]<='f')
{
input[i]=reverse[input[i]-'a'+10];
}
else if(input[i]>='A'&&input[i]<='F')
{
input[i]=reverse[input[i]-'A'+10];
}
}
printf("%s",input);
}
return 0;
}
查看12道真题和解析