题解 | #字符游戏#

字符游戏

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")

全部评论

相关推荐

_mos_:要不是看评论区我都不知道你要找的是数分
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务