题意就是输入两行字符串,第一行字符串代表的是坏掉的键盘按钮,+和字母大小写需要特别处理一下,剩余的直接将标志数组所在位直接置1就可以了,第二行为要输出的字符串,循环一次根据标志数组输出字符串.
#include "iostream"
#include "map"
#include "vector"
#include "string"
#include "algorithm"
#include "string.h"
using namespace std;
int main()
{
int flag[300];
int i,j;
int lenf,leni;
string fuhao,input;
memset(flag,0,sizeof(flag));
cin>>fuhao;
cin>>input;
lenf = fuhao.size();
leni = input.size();
for(i=0;i<lenf;i++)
{
if(fuhao[i] == '+')
{
for(j=65;j<=90;j++)
flag[j] = 1;
}
else if(fuhao[i]>=65&&fuhao[i]<=90)
{
flag[fuhao[i]]=1;
flag[fuhao[i]+32]=1;
}
else if(fuhao[i]>=97&&fuhao[i]<=122)
{
flag[fuhao[i]]=1;
flag[fuhao[i]-32]=1;
}
else
flag[fuhao[i]]=1;
}
for(i=0;i<leni;i++)
{
if(flag[input[i]]==0)
cout<<input[i];
}
cout<<endl;
return 0;
}