洛谷 B2135:单词替换
【题目来源】
https://www.luogu.com.cn/problem/B2135
【题目描述】
输入一个字符串,以回车结束(字符串长度 ≤200)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。
【输入格式】
第 1 行是包含多个单词的字符串 s;
第 2 行是待替换的单词 a(长度 ≤100);
第 3 行是 a 将被替换的单词 b( 长度≤100)。
s,a,b 最前面和最后面都没有空格。
【输出格式】
输出只有 1 行,将 s 中所有单词 a 替换成 b 之后的字符串。
【算法分析】
字符串的算法设计题,若直接使用字符串提供的函数,会简单很多。
本题可参考 POJ 3981(https://blog.csdn.net/hnjzsyjyj/article/details/134097986)的解法来做。其中,用到了字符串提供的 find 函数及 replace 函数。
【算法代码】
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
string a,b;
int pos;
getline(cin,s);
cin>>a>>b;
while((pos=s.find(a))!=-1){
s.replace(pos,a.size(),b);
}
cout<<s<<endl;
return 0;
}
/*
in:
You want someone to help you
You
I
out:
I want someone to help you
*/
【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/134097986