天天看點

1962 Problem D 單詞替換

問題 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;
}      

繼續閱讀