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