这题我直接用map写的。思路是遍历一遍input1,把出现的字符(遇到小写的转成大写)设置成false。再遍历一遍input2,把之前false的字符(遇到小写的转成大写)设成true。之后就再遍历一遍input1,把还是false的(input2中不出现的)输出。
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <map>
using namespace std;
int main(){
char det[81];
map<char,bool> dd; //标记false 还是 true?
char input1[81],input2[81];
scanf("%s",&input1);
getchar();
scanf("%s",&input2);
for (int i=0;i<strlen(input1);i++){
if(input1[i]>='a' && input1[i]<='z') input1[i]=input1[i]-'a'+'A'; //遇到小写的转大写
dd[input1[i]]=false;
}
for (int i=0;i<strlen(input2);i++){
if(input2[i]>='a' && input2[i]<='z') input2[i]=input2[i]-'a'+'A'; //遇到小写的转大写
if (dd[input2[i]] == false) dd[input2[i]]= true; //把之前的false变成true?
}
for (int i=0;i<strlen(input1);i++){ //输出还是false的
if (dd[input1[i]]==false) {
printf("%c",input1[i]);
dd[input1[i]] = true;
}
}
return 0;
}