139. Word Break(难)
2016-08-12 16:34
183 查看
139. Word Break
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[i]为前i个字符是否可以切割。
则dp[i]=dp[j]&&s.substr(j,i-j)
class Solution { public: bool wordBreak(string s, unordered_set<string>& wordDict) { int len=s.size(); vector<bool> dp(len+1,false); dp[0]=true; for(int i=1;i<=len;i++){ for(int j=i-1;j>=0;j--){ if(dp[j]&&wordDict.count(s.substr(j,i-j))){ dp[i]=true; break; } } } return dp[len]; } };
140. Word Break II
Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where each word is a valid dictionary word.Return all such possible sentences.
For example, given
s =
"catsanddog",
dict =
["cat", "cats", "and", "sand", "dog"].
A solution is
["cats and dog", "cat sand dog"].
用记忆递归
思路:不断切两刀,后面的有效,再递归前面的。
class Solution { public: vector<string> wordBreak(string s, unordered_set<string>& wordDict) { if(m.count(s)){ return m[s]; } vector<string> res; if(wordDict.count(s)){//此时s直接在字典中 res.push_back(s); } for(int i=1;i<s.size();i++){ string last=s.substr(i); if(wordDict.count(last)){ string pre=s.substr(0,i); vector<string> tmp=combine(last,wordBreak(pre,wordDict)); res.insert(res.end(),tmp.begin(),tmp.end()); } } m[s]=res;//记忆 return res; } private: vector<string> combine(string last,vector<string> pre){ for(int i=0;i<pre.size();i++){ pre[i]+=" "+last; } return pre; } unordered_map<string,vector<string>> m; };
相关文章推荐
- LeetCode(139) Word Break
- LeeCode_139 Word Break
- [LeetCode]题解(python):139-Word Break
- LeetCode 139 Word Break (DFS 分词 解存在性判断)
- Leetcode 139 Word Break
- Leetcode-139. Word Break
- LeetCode 139 Word Break
- leetcode 139. Word Break
- 139 Word Break
- LeetCode - 139/140 - Word Break
- 139. Word Break
- LeetCode(139)Word Break
- Leetcode#139 Word Break
- leetcode 139 Word Break(阿里测试岗笔试题)
- leetcode-139-Word Break
- leetcode 139. Word Break
- 139. Word Break
- (M)Dynamic Programming:139. Word Break
- 139. Word Break
- leetcode-139-Word Break