1570. 坏掉的键盘
作者:
lvjj
,
2024-03-16 19:48:08
,
所有人可见
,
阅读 18
#include<iostream>
using namespace std;
int main()
{
string a,b;
cin>>a>>b;
bool st[200]={0}; //ASCII 0-127
b+='#'; //防止越界?
for(int i=0,j=0;i<a.size();i++)//i指向a集合,j指向b集合
{
char x=toupper(a[i]),y=toupper(b[j]);//小写转大写
if(x==y) j++;
else
{
if(!st[x]) cout<<x,st[x]=true;//集合中的元素不相等而且没有重复就输出,第一次出现的元素用true标记,可达到去重的目的
}
}
return 0;
}
。
//下面代码
//bug:输出的顺序不一样(因为c++的set会自动排序,打乱了原来的顺序)
// #include <bits/stdc++.h>
// using namespace std;
// const int N = 100;
// string str1;
// string str2;
// set<char> a;
// set<char> b;
// set<char> c;
// int main(){
// cin>>str1>>str2;
// for(auto s1:str1){
// if(s1>'A'&&s1<'Z'){//输入到a集合中
// s1 = s1 + 32;
// a.insert(s1);
// }else{
// a.insert(s1);
// }
// }
// for(auto s2:str2){
// if(s2>'A'&&s2<'Z'){//输入到b集合中
// s2 = s2 + 32;
// b.insert(s2);
// }else{
// b.insert(s2);
// }
// }
// set_difference(a.begin(),a.end(),b.begin(),b.end(),inserter(c,c.begin()));//集合取差集
// for(auto c:c){
// if(c>='a'&&c<='z'){//转为大写
// c = c - 32;
// cout<<c;
// }else{
// cout<<c;
// }
// }
// cout<<endl;
// return 0;
// }