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;
}
};