题目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;
}
 
                
            
        
浙公网安备 33010602011771号