名字取好了 的题解
记住只在没有思路时使用题解,不要从它复制粘贴代码。请尊重题目和题解的作者。
在解题之前提交题解的代码会导致封禁。
在解题之前提交题解的代码会导致封禁。
作者:
概述
本题要求根据给定的原网站姓名和接收状态,输出改正后的正确姓和名。
核心解法是判断接收状态是否为 Rejected,若是则交换姓和名的顺序,否则保持不变。
分析
核心观察
接收状态直接表明了姓名是否被填反:Accepted 表示原顺序正确,Rejected 表示原姓和名完全倒置。
思路
输入包含三个字符串:原 first name、原 last name、状态 status。
若 status 等于 "Rejected",则需交换二者;否则维持原顺序。
本题仅涉及字符串操作,无需额外数学计算。
具体示例
样例 :输入
Brother Call Accepted,状态为 Accepted,不交换,输出 Brother Call。
样例 :输入
Call Brother Rejected,状态为 Rejected,交换后得到 Brother Call。
算法步骤
- 读入三个字符串,分别存入变量
first、last、status。 - 若
status等于"Rejected",交换first和last的值。 - 输出
first和last,中间用空格隔开。
复杂度分析
- 时间复杂度:
,其中
为字符串长度(交换与输出需遍历字符串)。
- 空间复杂度:
,存储输入的字符串。
实现注意事项
- 状态字符串严格区分大小写,比较时需使用精确字符串匹配。
- 字符串长度不超过
,使用标准字符串类型即可。
- 输出时两姓名之间有一个空格,末尾可有换行。
源代码
#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)
评论