使用bitset、string、to_string、stoi等实现反转
字符串合并处理
http://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
#include <bits/stdc++.h>
using namespace std;
char biconvert(char c) {
bitset<4> bs(stoi(string("0X") + c, 0, 16));
string s(bs.to_string());
reverse(s.begin(), s.end());
int i = stoi(s, nullptr, 2);
if (i < 10) {
return i + '0';
} else {
return i + 'A' - 10;
}
}
int main() {
string s1, s2;
cin >> s1 >> s2;
string s;
// first step
s = s1 + s2;
// second step
s1.clear();
s2.clear();
for (int i = 0; i < s.size(); i = i + 2) {
s1 += s[i];
}
for (int i = 1; i < s.size(); i = i + 2) {
s2 += s[i];
}
sort(s1.begin(), s1.end());
sort(s2.begin(), s2.end());
s.clear();
size_t short_len = min(s1.size(), s2.size());
for (int i = 0; i < short_len; ++i) {
s += s1[i];
s += s2[i];
}
if (s1.size() > s2.size()) {
for (int i = short_len; i < s1.size(); ++i) {
s += s1[i];
}
} else {
for (int i = short_len; i < s2.size(); ++i) {
s += s2[i];
}
}
// third step
for (int i = 0; i < s.size(); ++i) {
if (isdigit(s[i]) || s[i] >= 'a' && s[i] <= 'f' || s[i] >= 'A' && s[i] <= 'F') {
s[i] = biconvert(s[i]);
}
}
cout << s << endl;
}