题解 | #字符串合并处理#
字符串合并处理
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
#include <algorithm>
#include <iostream>
#include <bits/stdc++.h>
#include <vector>
using namespace std;
int main() {
string s,s2;
cin >> s >> s2;
s += s2;
vector<char> odd;
vector<char> even;
for(int i = 0; i<s.size(); i++){
if(i%2 == 0){
even.push_back(s[i]);
}else{
odd.push_back(s[i]);
}
}
sort(even.begin(),even.end());
sort(odd.begin(),odd.end());
int idx1 = 0, idx2 = 0;
for(int i = 0; i<s.size(); i++){
if(i % 2 == 0){
s[i] = even[idx1++];
}else{
s[i] = odd[idx2++];
}
bool flag = true;
if(s[i] >= 'a' && s[i] <= 'f'){
s[i] -= 'a'-10;
}else if(s[i] >= '0' && s[i] <='9'){
s[i] -= '0';
}else if(s[i] >= 'A' && s[i] <= 'F'){
s[i] -= 'A'-10;
}else{
flag = false;
}
int num = s[i];
if(flag){
int res = 0;
for(int i = 0; i<4; i++){
res = res * 2 + num % 2;
num = num/2;
}
if(res >= 10){
s[i] = 'A' + res - 10;
}else{
s[i] = res + '0';
}
}
}
cout << s;
}
// 64 位输出请用 printf("%lld")

