C++ 解题步骤
前提:预设好转换
1,先合并 然后用multiset分奇偶组排序
2,再合并,最后替换和输出

#include <iostream>
#include<string>
#include<set>
#include<vector>
#include<algorithm> 
using namespace std;
const string helper1 = "0123456789abcdefABCDEF";//提前先做好
const string helper2 = "084C2A6E195D3B7F5D3B7F";
int main()
{
     string s1,s2,s3;
     int i,taget;
     multiset<char> str1,str2;
     vector<char> str3;
     while(cin>>s1>>s2)
        {
        s3=s1+s2;  //合并
        for(i=0;i<s3.size();i+=2)//分奇偶组 并且排序
        {
            str1.insert(s3[i]);
        }
         for(i=1;i<s3.size();i+=2)
        {
            str2.insert(s3[i]);
        }
        multiset<char> ::iterator ak=str1.begin();
        multiset<char> ::iterator it=str2.begin();
        for(i=0;i<s3.size();i++)  // 再合并
        {
            if(i==0)
            {           
                str3.push_back(*ak);
            }
            else if(i==1)
            {
                 str3.push_back(*it);
            }
            else if(i%2==0)
            {         
                ak++;
                str3.push_back(*ak);
            }
            else if(i%2!=0)
            {
                it++;
                str3.push_back(*it);
            }
        }
        for(i=0;i<str3.size();i++)
        {
            taget=helper1.find(str3[i]);
            if(taget!=-1)
            {
                str3[i]=helper2[taget];
            }    
        }

        for(i=0;i<str3.size();i++)
        {
            cout<<str3[i];
        }
         cout<<endl;//输出换行
         str3.clear();//清零
         str1.clear();
         str2.clear();
         s3.clear();
    } 
    return 0;
}