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