题解
【基础】字符串连接
1 条题解
-
0
解题思路
用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