题目106:单词替换
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:1111
解决:321
- 题目描述:
-
输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。
- 输入:
-
多组数据。每组数据输入包括3行,第1行是包含多个单词的字符串 s,第2行是待替换的单词a,(长度<=100)第3行是a将被替换的单词b。(长度<=100)s, a, b 最前面和最后面都没有空格.
- 输出:
-
每个测试数据输出只有 1 行,将s中所有单词a替换成b之后的字符串。
- 样例输入:
-
You want someone to help you You I
- 样例输出:
-
I want someone to help you
#include<cstdio> #include<cstdlib> #include<cmath> #include<cstring> #include<string> #include<algorithm> #include<iostream> #include<sstream> using namespace std; int main() { freopen("in.txt","r",stdin); char a[1000]; string a1;string move;string add;int i; while(gets(a)) { a1=a; if(a1.size()==0) continue; gets(a); move=a; gets(a); add=a; i=a1.find(move,0); while(i!=string::npos) {a1.replace(i,move.size(),add);i=a1.find(move,0);} //scanf("%s",&move[0]);scanf("%s",&add[0]); //printf("%s",move.c_str()); // printf("%s",add.c_str()); /* i=a1.find(move,0); while(i!=string::npos) { a1.erase(i,move.size()); a1.insert(i,add); i=a1.find(move,0); }*/ printf("%s\n",a1.c_str()); } return 0; }
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<iostream>
#include<sstream>
using namespace std;
int main()
{
//freopen("in.txt","r",stdin);
char a[1000]; string a1;string move;string add;int i;string kong;kong+=" ";
while(gets(a))
{
a1=a;
if(a1.size()==0) continue;
gets(a);
move=a;
gets(a);
add=a;
i=a1.find(move,0);
while(i!=string::npos)
{
//printf("%s\n", a1.substr(i+move.size(),1).c_str());
// printf("%d %d\n",(i+ move.size()),a1.size());
if((i+move.size()+1)<=a1.size()&& ( a1.substr(i+move.size(),1)==kong ))
{a1.replace(i,move.size(),add);}
else if ( (i+move.size())==a1.size() )
{a1.replace(i,move.size(),add);}
else {i=a1.find(move,i+move.size());continue;}
i=a1.find(move,0);
}
printf("%s\n",a1.c_str());
}
return 0;
}