0
点赞
收藏
分享

微信扫一扫

2022-1-29 Leetcode 648.单词替换

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这道题目的关键是,如果找到了前缀,就整个单词就只留下前缀,剩下的部分扔掉,如果没有找到前缀,整个单词都留下。

string replaceWords(vector<string>& dict, string sentence) {

    unordered_set<string> unst(dict.begin(), dict.end());
    
    string temp,result;
    for (unsigned i = 0; i < sentence.size(); ++i) {
    //快速制作前缀
        temp = "";
        
        while (sentence[i] != ' ' && i < sentence.size()) {
            temp += sentence[i];
            if (unst.find(temp) != unst.end()) {//此时已经找到了前缀了
                break;
            }
            i++;
        }
        //如果没有找到前缀,此时指针指向 空格,就不会进入下个循环
        //加到结果上面
        result += temp;
        result += " ";//如果不判断,时间会加快,但是最后会多一个空格
        while (sentence[i] != ' ' && i < sentence.size())
        {
            ++i;
        }//将整个单词跨过去。直到遇到空格    

    }

    return result.substr(0, result.size() - 1);

}

举报

相关推荐

0 条评论