题目描述
输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。
输入
多组数据。每组数据输入包括3行,
第1行是包含多个单词的字符串 s,
第2行是待替换的单词a,(长度<=100)
第3行是a将被替换的单词b。(长度<=100)
s, a, b 最前面和最后面都没有空格。
输出
每个测试数据输出只有 1 行,
将s中所有单词a替换成b之后的字符串。
样例输入
I love Tian Qin
I
You
样例输出
You love Tian Qin
代码
感觉自己做的很笨,以后可能会优化一下。
#include<cstdio>
#include<cstring>
int main(){
char s[101],a[101],b[101];//a:待替换的单词 b:单词a将被替换为单词b
while(gets(s)!=NULL){
gets(a);
gets(b);
int len_s=strlen(s);
int len_a=strlen(a);
for(int i=0;i<len_s;++i){
bool flag=true;
int p=i;
for(int j=0;j<len_a;++j){
if(s[p++]!=a[j]){
flag=false;
break;
}
}
if(flag){
if(i==0){
if(s[p]==' '||s[p]=='\0'){
printf("%s",b);
i=p-1;
}else{
printf("%c",s[i]);
}
}else{
if(s[i-1]==' '&&(s[p]==' '||s[p]=='\0')){
printf("%s",b);
i=p-1;
}else{
printf("%c",s[i]);
}
}
}else{
printf("%c",s[i]);
}
}
printf("\n");
}
return 0;
}
/*
I love Tian QinIIII OI IO IO OI II I I
I
You
*/