题解 | #单词替换#

单词替换

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

相关推荐

07-03 16:02
门头沟学院 Java
今天面试,非常紧张,面试官问我springboot有哪些核心模块都答不上来了,真的对自己无语了!
程序员小白条:28届我勒个去,很多人面试都没机会
查看1道真题和解析
点赞 评论 收藏
分享
06-12 16:00
天津大学 Java
牛客30236098...:腾讯坏事做尽,终面挂是最破防的 上次被挂了后我连简历都不刷了
点赞 评论 收藏
分享
评论
14
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务