名字取好了 的题解


记住只在没有思路时使用题解,不要从它复制粘贴代码。请尊重题目和题解的作者。
在解题之前提交题解的代码会导致封禁。

作者: admin

概述

本题要求根据给定的原网站姓名和接收状态,输出改正后的正确姓和名。
核心解法是判断接收状态是否为 Rejected,若是则交换姓和名的顺序,否则保持不变。

分析
核心观察

接收状态直接表明了姓名是否被填反:Accepted 表示原顺序正确,Rejected 表示原姓和名完全倒置。

思路

输入包含三个字符串:原 first name、原 last name、状态 status。
若 status 等于 "Rejected",则需交换二者;否则维持原顺序。
本题仅涉及字符串操作,无需额外数学计算。

具体示例

样例 1:输入 Brother Call Accepted,状态为 Accepted,不交换,输出 Brother Call。
样例 2:输入 Call Brother Rejected,状态为 Rejected,交换后得到 Brother Call。

算法步骤
  1. 读入三个字符串,分别存入变量 first、last、status。
  2. 若 status 等于 "Rejected",交换 first 和 last 的值。
  3. 输出 first 和 last,中间用空格隔开。
复杂度分析
  • 时间复杂度:O(L),其中 L 为字符串长度(交换与输出需遍历字符串)。
  • 空间复杂度:O(L),存储输入的字符串。
实现注意事项
  • 状态字符串严格区分大小写,比较时需使用精确字符串匹配。
  • 字符串长度不超过 1000,使用标准字符串类型即可。
  • 输出时两姓名之间有一个空格,末尾可有换行。
源代码
#include <bits/stdc++.h>
using namespace std;

int main() {
    string first, last, status;
    cin >> first >> last >> status;
    if (status == "Rejected") {
        swap(first, last);
    }
    cout << first << ' ' << last << '\n';
    return 0;
}
first, last, status = input().split()
if status == "Rejected":
    first, last = last, first
print(first, last)

评论

目前没有评论。