思路:读入两个字符串,将坏掉的键标记,把未标记且的输出。
**过滤 1:本身坏掉被标记的键
2:是大写字母,且上档键坏掉**
注意:坏掉的如果是字母,那他的小写跟大写都不能输出。测试点4只有‘+’是上档键,保留用strlen()求长度会超时,在上面直接用变量保存字符串长度即可
代码如下:
#include<stdio.h>
#include<string.h>
int main()
{
char a[128],b[100001],s[128]={0};
int i,flag=0,t=0,m;
gets(a);//坏掉的键
gets(b);//正常输入的字符
m=strlen(b);//下面直接用strlen()测试点4会超时
for(i=0;i<strlen(a);i++){
if(a[i]>='A'&&a[i]<='Z')
s[a[i]+32]+=1;//虽然给出的是大写,小写也不能打出
if(a[i]=='+')
t=1;//标记上档键
s[a[i]]+=1;
}
for(i=0;i<m;i++)//不用m用strlen()会超时
{
if(s[b[i]]!=0||b[i]>='A'&&b[i]<='Z'&&t==1)//过滤的两种情况
continue;
else
flag=1;
printf("%c",b[i]);
}
if(!flag)
printf("\n");
return 0;
}