top1编程
← 返回题目
题解

【基础】字符串连接

1 条题解

  • 0
    @ 2026-7-30 1:33:41

    解题思路

    用26个位置的数组记录字母是否出现,先处理第一个字符串,再处理第二个字符串。

    参考代码

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main() {
        string a, b;
        bool used[26] = {};
        cin >> a >> b;
        // 先按原顺序处理第一个字符串。
        for (int i = 0; i < (int)a.size(); i++) {
            int x = a[i] - 'a';
            if (!used[x]) {
                cout << a[i];
                used[x] = true;
            }
        }
        // 再处理第二个字符串,已经出现过的字母不再输出。
        for (int i = 0; i < (int)b.size(); i++) {
            int x = b[i] - 'a';
            if (!used[x]) {
                cout << b[i];
                used[x] = true;
            }
        }
        // used数组保证每个小写字母最多出现一次。
        return 0;
    }
    

    复杂度分析

    代码只使用了简单变量、循环和字符串。设输入长度为 n,时间复杂度为 O(n^2)(若有嵌套枚举则按实际循环计算),额外空间复杂度为 O(n)。

    • 1