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;
}
京公网安备 11010502036488号