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; }