单词替换
题目
解析
发现直接查找很麻烦(难以判断是否独占一个单词),所以在三个字符串的左右两边都加上一个空格,然后使用find函数就可以了
可以保存上一个查找到的位置,以优化效率
code:
#include<cstdio>
#include<string>
#include<iostream>
using namespace std;
string x,y,z;
char t;
int ly,k,l;
int main()
{
x=" ";
do{cin>>y,x=x+y+" ",scanf("%c",&t);}while(t==' ');
cin>>y>>z,y=" "+y+" ",z=" "+z+" ",ly=y.size(),k=l=x.find(y,0);
while(k!=string::npos)x.erase(k,ly),x.insert(k,z),l=k=x.find(y,l+1);
cout<<x.substr(1,x.size()-1);
return 0;
}