题解 | #单词替换#

单词替换

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;
}
全部评论

相关推荐

尊嘟假嘟点击就送:加v细说,问题很大
点赞 评论 收藏
分享
点赞 评论 收藏
分享
11 收藏 评论
分享
牛客网
牛客企业服务