题解 | #字符串合并处理#
字符串合并处理
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
#include <algorithm> #include <iostream> #include <string> #include <vector> using namespace std; int main() { string str1,str2; string tem; cin>>str1>>str2; str1+=str2;//字符串合并 for (int i=0; i<str1.size(); i+=2) { tem.push_back(str1[i]);//找出偶数坐标元素 } sort(tem.begin(), tem.end());//对找出的偶数坐标元素坐标排序 int dou_size=tem.size();//记录偶数坐标元素个数 for (int i=1; i<str1.size(); i+=2) { tem.push_back(str1[i]);//找出奇数坐标元素 } sort(tem.begin()+dou_size, tem.end());//对奇数坐标元素排序 int j=0;//偶数坐标元素插回起始点 for (int i=0; i<dou_size; ++i) { str1[j]=tem[i];//插回偶数坐标元素 j+=2; } j=1; for (int i=dou_size; i<tem.size(); ++i) { str1[j]=tem[i];//插回奇数坐标元素 j+=2; } vector<char> toHex{'0','8','4','C','2','A','6','E','1','9','5','D','3','B','7','F'};//字符转换对照表 for (auto elem : str1) { if (elem>='a'&&elem<='f') { elem=toHex[elem-'a'+10];//小写字母转换 } else if (elem>='A'&&elem<='F') { elem=toHex[elem-'A'+10];//大写字母转换 } else if (elem>='0'&&elem<='9') { elem=toHex[elem-'0'];//数字转换 } cout<<elem;//输出字符串 } } // 64 位输出请用 printf("%lld")