题解 | #字符串合并处理#
字符串合并处理
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
// HJ31 字符串合并处理.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
char a[] = { "0123456789abcdefABCDEF" };
char b[] = { "084C2A6E195D3B7F5D3B7F" };
class Solution {
public:
string numChange(string& s);
};
string Solution::numChange(string& s)
{
for (int i = 0; i < s.size(); i++)
{
if (isdigit(s[i]))
{
s[i] = b[s[i] - '0'];
}
else if (s[i]>='a'&&s[i]<='f')
{
s[i] = b[s[i] - 'a' + 10];
}
else if (s[i]>='A'&&s[i]<='F')
{
s[i] = b[s[i] - 'A' + 16];
}
}
return s;
}
int main()
{
Solution a;
string s1, s2, str;
cin >> s1 >> s2;
str += s1;
str += s2;
string v1;
string v2;
for (int i = 0; i < str.size(); i++)
{
if (i % 2 == 0)
{
v1.push_back(str[i]);
}
else
{
v2.push_back(str[i]);
}
}
sort(v1.begin(), v1.end());
sort(v2.begin(), v2.end());
for (int i = 0,k=0,j=0; i < str.size(); i++)
{
if (i % 2 == 0)
{
str[i] = v1[k++];
}
else if(i%2==1)
{
str[i] = v2[j++];
}
}
//cout << str << endl;
cout << a.numChange(str) << endl;
return 0;
}
查看5道真题和解析