给定两个字符串 A 和 B,本题要求你输出 A+B,即两个字符串的并集。要求先输出 A,再输出 B,但重复的字符必须被剔除。
输入格式:
输入在两行中分别给出 A 和 B,均为长度不超过 106的、由可见 ASCII 字符 (即码值为32~126)和空格组成的、由回车标识结束的非空字符串。
输出格式:
在一行中输出题面要求的 A 和 B 的和。
输入样例:
This is a sample test
to show you_How it works
输出样例:
This ampletowyu_Hrk
坑:
1.如何将输入的一行当做一个字符串,包括下划线和空格。
2.将字符串中后面重复的字符剔除掉。
3.二重循环找相同字符时,可能会超时。
收获:
1.调用系统函数getline(cin,a),可以获取当前输入的一行。
2.用二重循环,只需要从前往后找到有相同的字符就可以处理了。
3.解决算法时间运行过长的问题,分而治之的优化思想。
4.字符串的一些常规函数操作,如push_back函数的使用。
代码如下:
#include <iostream>
#include<string>
using namespace std;
string tichu(string s) //剔除重复字符的函数
{
string result;
string temp = s;
int lengh = s.size();
for (int i = 0; i < lengh; i++)
{
int j;
for (j = 0; j < i; j++)
{
if (s[i] == temp[j])
break;
}
if (j == i)
result.push_back(s[i]);说明前面没有出现该字符,入字符串
}
return result;
}
int main()
{
string a, b;
getline(cin, a);
getline(cin, b);
string a1 = tichu(a);//分别处理之后再整合处理,会优化算法处理长度。
string b1 = tichu(b);
string c = a1 + b1;
string r = tichu(c);
cout << r;
return 0;
}