本题易错点:
1、相同的字符只要可以再次匹配到,就可以重复输出;
2、OJ中的测试名字中有空格,所以不能用cin>>name1>>nam2;只能用getline(cin,name1)&&getline(cin,name2);
Description:
你知道岛上的龙都是怎样取名字的嘛?他们是从父亲的名字当中取一些字母,然后添加一点新的字母,这样一条龙的名字就诞生啦!当然,如果两条龙的血缘越近,他们名字共同的字母就越多。
现在,给出龙a和龙b的名字,找出他们名字中共同的字母,按字典序排序输出,已保证所有名字都为小写字母,且每个名字不超过1000个字母。
Input:
有多组测试样例,输入直到文件末尾。
每组样例占两行,每组第一行为龙a的名字,第二行为龙b的名字。
Output:
对每组样例输出一行,输出内容为龙a与龙b名字相同的字母。
Sample Input:
buff
beltsui
toothless
laurel
nader
alay
Sample Output:
bu
el
a
#include <iostream>
#include "string"
#include "set"
using namespace std;
int main() {
string str1, str2;
while (getline(cin, str1) && getline(cin, str2)) {
//遍历,记录
multiset<char> result;
for (int i = 0; i < str1.size(); ++i) {
if (str2.find(str1[i]) != -1) {
result.insert(str1[i]);
str2[str2.find(str1[i])] = '#';
}
}
//输出
for (auto it: result) {
cout << it;
}
cout << endl;
}
return 0;
}