题解 | #单词替换#
单词替换
http://www.nowcoder.com/practice/5b58a04679d5419caf62c2b238e5c9c7
思路:设字符串为s1,要替换的单词s2,替换内容s3。设两个标记位f1、f2,f1指向单词后的空格,f2指向每个单词的第一个字母。遍历s1,每当遇到空格或遍历到字符串结束时进行一次判断,更新f1和f2,截取f1和f2之间的单词st与s2对比,如果相同则输出s3,不相同输出st。
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s1, s2, s3;
while (getline(cin, s1), getline(cin, s2), getline(cin, s3))
{
int f1 = -1, f2;
for (int i = 0; i <= s1.size(); i++)
{
if (s1[i] == ' ' || i == s1.size())
{
f2 = f1 + 1;//f2指向单词第一个字符
f1 = i;//f1指向空格
string st = s1.substr(f2, f1 - f2);
if (st == s2)
cout << s3;
else
cout << st;
if (i != s1.size())
cout << ' ';
}
}
cout << endl;
}
return 0;
}