这道题目的关键是,如果找到了前缀,就整个单词就只留下前缀,剩下的部分扔掉,如果没有找到前缀,整个单词都留下。
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);
}