1948: 替换单词

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:18 解决:13

题目描述

输入一个字符串,以回车结束(字符串长度<=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<bits/stdc++.h>
using namespace std;

int main(){
    string s,a,b;
    getline(cin,s);
    cin>>a>>b;
    a+=" ";
    b+=" ";
    s+=" ";
    int idx=0;
    while ((idx=(int)s.find(a,idx))!=-1) {
    	s.replace(idx,a.length(),b);
	}
	cout<<s;
	return 0;
}

#include<bits/stdc++.h>
using namespace std;
string s[100],t,a,b,ans;
int n,first;
int main(){
    while(cin>>t) {
    	s[n++]=t;
	}
	n--;
	b=s[n];
	n--;
	a=s[n];
	for (int i=0;i<n;i++) {
		if (s[i]==a) {
			if (first==0) {
			    ans+=b;
			    first=1;
			}else {
				ans+=" ";
				ans+=b;
			}
		}else {
			if (first==0) {
			    ans+=s[i];
			    first=1;
			}else {
				ans+=" ";
				ans+=s[i];
			}
		}
	}
	cout<<ans;
	return 0;
}