题解 | #字符串合并处理#
字符串合并处理
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
#include <algorithm>
#include <cctype>
#include <iostream>
#include <map>
#include <string>
using namespace std;
string& mySort(string &s) {
string es, os; // 偶序字串,奇序字串
for(int i=0; i<s.size(); ++i) {
if(i%2) os.push_back(s[i]);
else es.push_back(s[i]);
}
sort(es.begin(), es.end());
sort(os.begin(), os.end());
for(int i=0; i<es.size(); ++i) {
s[2*i] = es[i];
s[2*i+1] = os[i];
}
return s;
}
/* 由于需要转换的字符不算多,所以提前建好字典 */
map<char, char> mmap = {
{'0', '0'}, {'1', '8'}, {'2', '4'}, {'3', 'C'}, {'4', '2'}, {'5', 'A'}, {'6', '6'}, {'7', 'E'}, {'8', '1'}, {'9', '9'}, {'A', '5'}, {'B', 'D'}, {'C', '3'}, {'D', 'B'}, {'E', '7'}, {'F', 'F'}, {'a', '5'}, {'b', 'D'}, {'c', '3'}, {'d', 'B'}, {'e', '7'}, {'f', 'F'}
};
char transf(char &c) {
if((c>='0' && c <= '9') || (c>='a' && c<='f') || (c>='A' && c <= 'F'))
c = mmap[c];
return c;
}
int main() {
string str1, str2;
cin >> str1 >> str2;
string s = str1 + str2;
mySort(s);
for(char &c : s) transf(c);
cout << s;
return 0;
}
// 64 位输出请用 printf("%lld")
腾讯公司福利 1143人发布