LeetCode | Word Break II
来源:互联网 发布:pdf福昕阅读器 mac 编辑:程序博客网 时间:2024/04/28 21:12
题目:
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"]
.
思路:
用NP的思路可以做,不过时间复杂度比较高。因此可以考虑使用类似http://blog.csdn.net/lanxu_yy/article/details/17309571动态规划DP的方式做。由于要罗列出详细的分割组合,我们需要将动态规划空间扩展到n*n维。dp[i][j]表示,从i到j的字符串是否在字典之中。
代码:
class Solution {public: vector<bool>* dp; vector<string> mystring; vector<string> result; vector<string> wordBreak(string s, unordered_set<string> &dict) { dp = new vector<bool>[s.size()]; for(int i =0;i<s.size();i++) { for(int j =i;j<s.size();j++) { dp[i].push_back(isMatch(s.substr(i,j-i+1),dict)); } } output(s.size()-1, s); return result; } void output(int i, string s) { if(i==-1) { string str; for(int i=mystring.size()-1;i>=0;i--) { str += mystring[i]; if(i!=0) { str.push_back(' '); } } result.push_back(str); } else { for(int k=0;k<=i;k++) { if(dp[k][i-k]) { mystring.push_back(s.substr(k,i-k+1)); output(k-1,s); mystring.pop_back(); } } } } bool isMatch(string str, unordered_set<string> &dict) { unordered_set<string>::const_iterator got = dict.find (str); if(got != dict.end()) { return true; } else { return false; } }};
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
- 浏览器缓存机制
- 问题 Not a DRM File, opening notmally
- Linux下/etc/fstab文件详解
- 周鸿祎--怎样才能成为一个优秀的产品经理?
- C陷阱中--函数指针
- LeetCode | Word Break II
- Android IPC 通讯机制源码分析
- 数组的定义
- HTML Basic II
- 十三章 上课内容
- Length of Last Word
- 英语6级复习资料2
- noip2005解题报告
- 1602总结