Leetcode Word Break II
来源:互联网 发布:双汇系统网址知多少 编辑:程序博客网 时间:2024/06/05 19:04
Given a non-empty string s and a dictionarywordDict containing a list of non-empty words, add spaces ins to construct a sentence where each word is a valid dictionary word. You may assume the dictionary does not contain duplicate words.
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"]
.
UPDATE (2017/1/4):
The wordDict parameter had been changed to a list of strings (instead of a set of strings). Please reload the code definition to get the latest changes.
本题使用DFS进行求解,但不进优化下的DFS无法通过。通过记录中间结果,来避免重复计算,从而更加高效,也就是memoried DFS。
代码如下:
class Solution {public: unordered_map<string,vector<string>> m; vector<string> combine(string s,vector<string> pre) { for(int i=0;i<pre.size();i++) pre[i] += " " + s; return pre; } vector<string> wordBreak(string s, vector<string>& wordDict) { if(m.count(s)) return m[s]; vector<string> result; if(find(wordDict.begin(),wordDict.end(),s) != wordDict.end()) result.push_back(s); for(int i=1;i<s.size();i++) { string word = s.substr(i); if(find(wordDict.begin(),wordDict.end(),word) != wordDict.end()) { string rem = s.substr(0,i); vector<string> pre = combine(word,wordBreak(rem,wordDict)); result.insert(result.end(),pre.begin(),pre.end()); } } m[s] = result; return result; }};
运用动态规划进行求解:
阅读全文
0 0
- [leetcode]Word Break II
- LeetCode:Word Break II
- Leetcode: Word Break II
- [LeetCode] Word Break II
- [LeetCode]Word Break II
- LeetCode | Word Break II
- [LeetCode] - Word Break II
- LeetCode - Word Break II
- Leetcode Word Break II
- [LeetCode] Word Break II
- Word Break II -- LeetCode
- LeetCode (Word Break II )
- Leetcode--Word Break II
- Leetcode: Word Break II
- LeetCode Word Break II
- Word Break II leetcode
- [leetcode]Word Break II
- leetcode -- word break II
- javascript
- Echarts 标签过长如何让axisLabel换行
- IsNullOrEmpty()方法
- Python一些小知识
- Swift 4 JSON 解析指南
- Leetcode Word Break II
- 虚拟机中vsftpd上传速度慢的解决办法
- linux ubuntu修改用户密码
- SQL数据库操作
- 欧拉线性筛法求素数(顺便实现欧拉函数的求值)
- Mac OS X ifconfig命令解释
- Android集合数据对比是否相同
- HTTP Error 500.19
- JAVA:MD5-MD2计算