OJ:单词替换
用 string 中的 find()、erase() 和 insert()可以比较简单的完成这道题目。
注意 find() 函数只返回目标字符串第一次出现的位置,所以要用到 while 循环,直至 find() 函数返回 string::npos
(-1)时退出循环。
而直接使用 find() 函数,会出现不是单词也可能匹配到的情况,如目标字符串为CCC,CCCCC的单词也会被匹配成功,因此要在 str,a,b 前后加上空格,这样即可保证匹配到的是完整的单词。
代码如下:
#include<iostream>
#include<string>
using namespace std;
int main(){
string str,a,b;
getline(cin,str);
cin>>a>>b;
str=" "+str+" ";
a=" "+a+" ";
b=" "+b+" ";
int pos=str.find(a);
while(pos!=string::npos){
int len=a.size();
str.erase(pos,len);
str.insert(pos,b);
pos=str.find(a);
}
str.erase(0,1);
str.erase(str.size()-1,str.size());
cout<<str<<endl;
//cout<<s.substr(1,str.size()-2)<<endl;
}