top1编程
← 返回题目
题解

宝库的钥匙

1 条题解

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

    解题思路

    题目告诉我们第一个字符串的长度是偶数,要把第二个字符串 b 插入到第一个字符串 a 的正中央。

    正中央的位置怎么找?长度是偶数,比如长度 4,正中间就在第 2 个字符和第 3 个字符之间,即 mid = a.size() / 2 = 2。

    做法:

    1. 读入 a 和 b。
    2. 计算 mid = a.size() / 2。
    3. 用 substr 把 a 切成两半:a.substr(0, mid) 是前半,a.substr(mid) 是后半(第二个参数省略表示一直取到末尾)。
    4. 拼接输出:前半 + b + 后半。

    举例:a = "aabb"(长度 4,mid=2),前半 aa,后半 bb,插入 xxxx → aaxxxxbb。

    参考代码

    // 宝库的钥匙:把第二个字符串插入到第一个字符串的正中央
    #include <iostream>
    using namespace std;
    int main() {
        string a, b;         // 第一个串长度是偶数
        cin >> a >> b;       // 输入两个字符串
        int mid = a.size() / 2; // 正中央位置=长度的一半
        // 输出:前半 + 插入串 + 后半
        cout << a.substr(0, mid) << b << a.substr(mid) << endl;
        return 0;
    }
    

    复杂度分析

    两个字符串长度都不超过 50。拼接就是把两串的字符按顺序输出一遍,记 a 的长度为 n,b 的长度为 m,时间复杂度 O(n+m),空间 O(n+m)。

    • 1