Word Break II
来源:互联网 发布:华为软件发布 编辑:程序博客网 时间:2024/05/16 17:52
使用二位bool数组来标记前驱的办法会超时,用vector<int>的数组既节省空间,又节省时间。
另一个需要注意的地方是在寻找i的前驱节点j时,在 Word Break I找到一个j可以直接break,而此处需要找到所有的j。
在DFS的过程中,path传值即可。此处如果用引用,需要退栈(删除最后一个word),反而会更加麻烦。
class Solution {public: vector<string> wordBreak(string s, unordered_set<string> &dict) { const int n = s.size(); vector<int> table[n+1]; for(int i=1; i<=n; i++) for(int j=i-1; j>=0; j--) if(dict.find(s.substr(j, i-j)) != dict.end() && (j==0 || table[j].size())) table[i].push_back(j); vector<string> result; if(table[n].size() == 0) return result; dfs(table, s, "", result, n); return result; } void dfs(vector<int> table[], string &s, string path, vector<string> &result, int cur) { if(cur == 0) { path.erase(path.size()-1); result.push_back(path); return; } for(int i=0; i<table[cur].size(); i++) { string word = s.substr(table[cur][i], cur-table[cur][i]); dfs(table, s, word + " " + path, result, table[cur][i]); } }};
0 0
- Word Break && Word Break II
- Word Break && Word Break II
- [leetcode]Word Break II
- Word Break II
- Word Break II
- LeetCode:Word Break II
- Word Break II
- Leetcode: Word Break II
- [LeetCode] Word Break II
- [LeetCode]Word Break II
- LeetCode | Word Break II
- Word Break II
- Word Break II
- [LeetCode] - Word Break II
- LeetCode - Word Break II
- Leetcode Word Break II
- Word Break II
- Word Break II
- 数据挖掘——基于R文本情感分析(2)
- Count the Trees-卡特兰数\高精度乘法
- 解决eclipse异常退出后再次启动时自动退出的问题
- Android ViewPager实现图片 小圆点切换
- ASP中Gridview手动绑定数据
- Word Break II
- 创业有感-表达能力很关键
- 关于睡眠和休眠
- Present ViewController详解
- 如何做到每天写代码?
- 机器学习(0)
- 编译小结(9)Solaris下编译时碰到的referenced symbol not found问题
- 内部类的知识点总结
- Linux的学习路线图