分析:给出3种方法
- 利用string中的好用的函数解决问题
#include<bits/stdc++.h>
using namespace std;
int main(){
string s1,s2,t;
cin>>s1>>s2;
for(int i=0;i<s1.length();i++){
if(s2.find(s1[i])==string::npos && t.find(toupper(s1[i]))==string::npos)
t+=toupper(s1[i]);
}
cout<<t;
return 0;
}
2.自定义一个散列数组
#include<bits/stdc++.h>
using namespace std;
int main(){
string s1,s2;
cin>>s1>>s2;
bool hashTable[128]={false};
for(char c:s2)
hashTable[toupper(c)]=true;
for(int i=0;i<s1.size();i++){
if(!hashTable[toupper(s1[i])]){
printf("%c",toupper(s1[i]));
hashTable[toupper(s1[i])]=true;
}
}
return 0;
}
3.使用 stl 中的 unorder_set
#include<bits/stdc++.h>
using namespace std;
int main(){
string s1,s2;
cin>>s1>>s2;
unordered_set<char> s;
for(char c:s2)
s.insert(toupper(c));
for(int i=0;i<s1.size();++i){
if(s.find(toupper(s1[i]))==s.end()){//如果没有在集合中找到这个字符,意味着这个按键是坏的
printf("%c",toupper(s1[i]));
s.insert(toupper(s1[i]));//已输出过,便可以看作是好的按键存入集合
}
}
return 0;
}