LeetCode/单词替换

现在,给定一个由许多词根组成的词典 dictionary 和一个用空格分隔单词形成的句子 sentence。你需要将句子中的所有继承词用词根替换掉。如果继承词有许多可以形成它的词根,则用最短的词根替换它。
输入:dictionary = ["cat","bat","rat"], sentence = "the cattle was rattled by the battery"
输出:"the cat was rat by the bat"

遍历替换

由于需要使用最短词根替换,首先对字典排序,然后遍历句子中每个单词
判断其是否存在词根,若存在则替换,并加入到结果中来

class Solution {
    bool isroot(string &root,string &word)//判断是否是词根的函数
    {
        for(int i=0;i<root.size();++i)
            if(root[i]!=word[i])
                return false;
        return true;
    }
public:
    string replaceWords(vector<string>& dictionary, string sentence) {
        sort(dictionary.begin(),dictionary.end());
        string ans,word;
        stringstream input(sentence);//初始化string流
        while(input>>word)//用string流分割sentence成一个个word
        {
            for(auto &root:dictionary)
                if(isroot(root,word))//找到第一个词根,用词根替换word
                {
                    word=root;
                    break;
                }
            ans+=word+" ";
        }
        ans.pop_back();//删除最后一个空格
        return ans;
    }
};
posted @ 2022-07-07 16:42  失控D大白兔  阅读(34)  评论(0编辑  收藏  举报