题目描述
给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。
输入
输入只有1组数据。
输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。
输出
删除输入的短字符串(不区分大小写)并去掉空格,输出。
样例输入
in
#include
int main()
{
printf(" Hi ");
}
样例输出
#clude
tma()
{
prtf(“Hi”);
}
提示
注:将字符串中的In、IN、iN、in删除。
代码
#include<cstdio>
#include<cstring>
int main(){
char del_str[1000];//要删除的字符串
scanf("%s",del_str);
int len_del=strlen(del_str);
for(int i=0;i<len_del;++i){//将要删除的字符串中的字母全部改为小写
if(del_str[i]>='A'&&del_str[i]<='Z'){
del_str[i]+=32;
}
}
int cnt=0;
char src_str[1000];
while(gets(src_str)!=NULL){
int len_src=strlen(src_str);
if(len_src==0&&cnt++){//当是空串是输出换行
printf("\n");
continue;
}
for(int i=0;i<len_src;++i){
int p=i;
bool flag=true;
for(int j=0;j<len_del;++j){//检验以i开头的子串是否与要删除的字符串匹配
if(src_str[p]==del_str[j]||src_str[p]==del_str[j]-32){
++p;
}else{//不匹配
flag=false;
break;
}
}
if(flag){//字符串匹配,则跳过该子串
i=p-1;
}else{//不匹配,输出当前字符
if(src_str[i]!=' '){//不输出空格
printf("%c",src_str[i]);
}
if(i==len_src-1) printf("\n");
}
}
}
return 0;
}