top1编程
← 返回题目
题解

拼接姓名

1 条题解

  • 0
    @ 2026-8-5 10:18:17

    解题思路

    题目要求把两个姓名按"英文字母的顺序"从小到大排好,再拼接成一个字符串输出。

    "英文字母的顺序"其实就是字典序,和我们查字典一样:先比较第一个字母,如果相同再比较第二个字母,依此类推。字符串类型可以直接用 >、<、== 来比较,它会自动按字典序比较。

    具体做法:

    1. 读入两个字符串 a 和 b。
    2. 如果 a > b,说明 a 更大,交换 a 和 b,让小的在前面。
    3. 把 a 和 b 直接拼接(cout << a << b),输出结果。

    举例:zhenghong 和 zhangsan。前两个字母都是 zh,第三位 e 和 a 比较,因为 a 排在 e 前面,所以 zhangsan 更小。最终输出 zhangsanzhenghong。

    参考代码

    // 拼接姓名:按字典序把两个姓名由小到大拼接输出
    #include <iostream>
    using namespace std;
    int main() {
        string a, b;          // 两个姓名字符串
        cin >> a >> b;        // 输入两个姓名
        if (a > b) swap(a, b); // 字典序小的放到前面
        cout << a << b << endl; // 拼接输出
        return 0;
    }
    

    复杂度分析

    两个字符串长度都不超过 100。按字典序比较两个字符串只需从左到右比一次,约 O(len1+len2);拼接输出也只需 O(len1+len2)。把两个字符串的总长度记为 n,则时间复杂度为 O(n),空间上只保存了两个字符串,也是 O(n)。

    • 1