Fork me on GitHub

题目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;
}

 

 

posted on 2013-01-27 15:09  huashiyiqike  阅读(438)  评论(0编辑  收藏  举报