题目:
给定一个字符串s和一组单词dict,判断s是否可以用空格分割成一个单词序列,使得单词序列中所有的单词都是dict中的单词(序列可以包含一个或多个单词)。
例如:
给定s=“leetcode”;
dict=[“leet”, “code”].
返回true,因为"leetcode"可以被分割成"leet code".
解析:
动态规划问题。
参考答案:
class Solution{
public:
bool wordBreak(string s, unordered_set<string> &dict) {
if(s.empty())
return false;
if(dict.empty())
return false;
vector<bool> canBreak(s.size()+1, false);
canBreak[0] = true;
for(int i = 1; i <= s.size(); ++i){
for(int j = i-1; j >= 0; --j){
if(canBreak[j] && dict.find(s.substr(j, i - j)) != dict.end()){
canBreak[i] = true;
break;
}
}
}
return canBreak[s.size()];
}
};