問題 D: 單詞替換
時間限制: 1 Sec 記憶體限制: 32 MB
題目描述
輸入一個字元串,以回車結束(字元串長度<=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
經驗總結
AC代碼
#include <cstdio>
#include <cstring>
const int maxn=400;
void Replace(char a[][maxn],char b[],char c[],int r)
{
int len=strlen(c);
for(int i=0;i<=r;i++)
{
if(strcmp(a[i],b)==0)
{
for(int j=0;j<len;j++)
a[i][j]=c[j];
a[i][len]='\0';
}
}
}
int main()
{
char a[maxn],b[maxn],c[maxn],ans[maxn][maxn];
while(gets(a))
{
scanf("%s",b);
scanf("%s",c);
int len=strlen(a),r=0,h=0;
for(int i=0;i<len;i++)
{
if(a[i]!=' ')
ans[r][h++]=a[i];
else
{
ans[r][h]='\0';
r++;
h=0;
}
}
ans[r][h]='\0';
Replace(ans,b,c,r);
for(int i=0;i<=r;i++)
{
printf("%s",ans[i]);
if(i<r) printf(" ");
}
printf("\n");
memset(a,'\0',sizeof(a));
memset(b,'\0',sizeof(b));
memset(c,'\0',sizeof(c));
getchar();
}
return 0;
}