思路:先将输入的坏掉的按键的大小写都标记为坏键,此外,如果上档键坏掉了,所有大写字母都标记为坏键

测试点问题

测试点2

测试点2答案错误是因为第一行输入了空字符串,C可以改为gets,C++改为getline输入

测试点4

测试点4超时,是因为调用了太多次的strlen或者length()
测试点4错误可能是因为用了fgets函数,或者试试输入以下数据

E
EQRe

通过代码

#include <bits/stdc++.h>
using namespace std;
bool keyword&#91;256]; //保存坏掉的按键
char word&#91;100003]; //输入的数据
void InitBadKey(string s){  //初始化坏掉的按键
    int slen=s.length();
    for(int i=0;i&lt;slen;i++){   //将大小转换为小写并储存小写坏键
        if(s&#91;i]>='A'&amp;&amp;s&#91;i]&lt;='Z'){
            keyword&#91;int(s&#91;i]-'A'+'a')]=true;  //是大小字母就将对应小写记为坏键
        } else keyword&#91;(int)s&#91;i]]=true;  //记录符号坏键
    }
    if(keyword&#91;43])  //如果上档键坏了,所有大写字母无法输入
    for(int i=(int)'a';i&lt;=(int)'z';i++) keyword&#91;i-int('a'-'A')]=true;
    else for(int i=(int)'a';i&lt;=(int)'z';i++) if(keyword&#91;i])  keyword&#91;i-int('a'-'A')]=true;
    //上档键没坏,就只有对应坏的键无法输入
    //for(int i=0;i&lt;200;i++) if(keyword&#91;i]) cout&lt;&lt;(char)i&lt;&lt;' ';
}
int main(){
    ios::sync_with_stdio(false);
    string s;
    getline(cin,s);  //输入坏键
    InitBadKey(s);
    cin>>word;
    int len=strlen(word);  //记录输入文字长度
    for(int i=0;i&lt;len;i++) if(!keyword&#91;(int)word&#91;i]]) cout&lt;&lt;word&#91;i];
    cout&lt;&lt;endl;
    return 0;
}