#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(){
char br[300]={0};
char str[100010];
int i,j;
scanf("%s%s",br,str);
for(i=0;i<strlen(br);i++){
br[tolower(br[i])]=1;
}
for(j=0;j<strlen(str);j++){
if(br[tolower(str[j])]!=1){
if(br['+']==1&&('A'<=str[j]&&str[j]<='Z')){
continue;
}
printf("%c",str[j]);
}
}
return 0;
}
总结:
1、答案部分正确 一个答案错误 一个运行超时 尚未解决。
第一次更新:
将字符串读入修改后仍有一个运行超时
第二次修改:
将字符串长度函数放到了循环外部,运行通过。
最终代码:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(){
char br[300]={0};
char str[100010];
int i,j,l1,l2;
//scanf("%s%s",br,str);
gets(br);
gets(str);
l1=strlen(br);//避免每次循环都要判断一次,运行超时。
l2=strlen(str);
for(i=0;i<l1;i++){
br[tolower(br[i])]=1;
}
for(j=0;j<l2;j++){
if(br[tolower(str[j])]!=1){
if(br['+']==1&&('A'<=str[j]&&str[j]<='Z')){
continue;
}
printf("%c",str[j]);
}
}
return 0;
}