您的位置:首页 > 其它

九度 oj 题目1111:单词替换

2017-01-27 13:08 260 查看
http://ac.jobdu.com/problem.php?pid=1111

这一题我用了 stl

#include <iostream>
#include <string>

using namespace std;

int main(){
//freopen("in/1111.in","r",stdin);
string str,newString, a,b;
string::size_type idx_begin,idx_end;
while(getline(cin,str) && !cin.eof()){
getline(cin,a);
getline(cin,b);
int len = (int)  str.length();
newString = "";
idx_begin = 0;
idx_end = 0;
while(idx_begin<(unsigned) len){
//find token
idx_begin = str.find_first_not_of(' ',(unsigned) idx_begin);
if(idx_begin == string::npos) idx_begin = str.length();
//copy `space(s)`
if(idx_begin > idx_end) newString += str.substr(idx_end,idx_begin - idx_end);
if(idx_begin == (unsigned) len) break;
idx_end = str.find_first_of(' ',(unsigned) idx_begin);
if(idx_end == string::npos) idx_end = (unsigned) len;
string token =  str.substr(idx_begin, idx_end - idx_begin);
//repalce
if(token == a) newString += b;
else newString+= token;

//move idx_begin
idx_begin = idx_end+1;

}
cout<<newString<<endl;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: