题解 | #字符游戏#
字符游戏
https://www.nowcoder.com/practice/381e9c03e6b44c058d81d41f5da8386d
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
string a, b;
while (cin >> a >> b) { // 注意 while 处理多个 case
// cout << a + b << endl;
}
string out;
int reverse_a = 0, reverse_b = 0;
int la = 0, lb = 0, ra = a.size()-1, rb = b.size()-1;
while (la <= ra && lb <= rb) {
if (reverse_a == 0 && reverse_b == 0) {//a未反转
if (a[la] < b[lb]) {
out.push_back(a[la]);
la++;
reverse_a = 1;
} else {
out.push_back(b[lb]);
lb++;
reverse_b = 1;
}
} else if (reverse_a == 0 && reverse_b == 1) {
if (a[la] < b[rb]) {
out.push_back(a[la]);
la++;
reverse_a = 1;
} else {
out.push_back(b[rb]);
rb--;
reverse_b = 0;
}
} else if (reverse_a == 1 && reverse_b == 0) {
if (a[ra] < b[lb]) {
out.push_back(a[ra]);
ra--;
reverse_a = 0;
} else {
out.push_back(b[lb]);
lb++;
reverse_b = 1;
}
} else {
if (a[ra] < b[rb]) {
out.push_back(a[ra]);
ra--;
reverse_a = 0;
} else {
out.push_back(b[rb]);
rb--;
reverse_b = 0;
}
}
}
while (la <= ra) {
if (reverse_a == 0) {
out.push_back(a[la]);
la++;
reverse_a = 1;
}else {
out.push_back(a[ra]);
ra--;
reverse_a = 0;
}
}
while (lb <= rb) {
if (reverse_b == 0) {
out.push_back(b[lb]);
lb++;
reverse_b = 1;
}else {
out.push_back(b[rb]);
rb--;
reverse_b = 0;
}
}
cout << out;
return 0;
}
// 64 位输出请用 printf("%lld")


