A46354. 替换单词输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。 第1行是包含多个单词的字符串 s; 第2行是待替换的单词a(长度 <= 100); 第3行是a将被替换的单词b(长度 <= 100). s, a,…
填空题
中等
知识点
题目描述
替换单词
输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。
时间限制:1000
内存限制:65536
输入
输入包括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<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
int flag = 0;
string s,a,b;
vector<string>words; //用来保存各个单词
vector<string>switch; //用来保存各个单词
getline(cin,s); //为了接受一行带空格的字符串
cin>>a>>b;
//将s中的单词提取到words
for(int i=0,j=0;i<s.size();++i){
if(s[i]!=' ')
words[j] += s[i];
else{
++j;
}
}
for(int i=0;i<words.size();++i)
{ //找到第一个要替换的单词并替换
if((0 == strcmp(words[i],a)) &&(0 == flag))
{
switch.push(b);
flag++
}//将单词放到switch
else
{
switch.push(words[i]);
}
}
for(int i=0;i<switch.size();++i)
{ //输出
cout<<switch[i]<<" ";
}
return 0;
}
上一题
下一题