Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words.
For example, given
s = “leetcode”,
dict = [“leet”, “code”].
Return true because “leetcode” can be segmented as “leet code”.
题目链接
DP: f [ i ] = true f [ j ] = true且 s 的 i 到 j 的子串在字典里。
f [ i ]=false f [ j ] = false 或者 s 的 i 到 j 的子串不在字典里。
//Runtime: 16 ms
class Solution {
public:
bool wordBreak(string s, unordered_set<string>& wordDict) {
vector<bool> f(s.length()+1,false);
int i,j=0;
for(i=0;i<s.length();i++){
if(j==0&&wordDict.find(s.substr(j,i+1))!=wordDict.end()){
f[i]=1;
continue;;
}
for(int j=0;j<i;j++){
if(f[j]&&wordDict.find(s.substr(j+1,i-j))!=wordDict.end()){
f[i]=1;
break;
}
}
}
return f[i-1];
}
};