LeetCode之Word Break II
来源:互联网 发布:网络奇葩女唯一的承诺 编辑:程序博客网 时间:2024/05/22 10:39
/*与Word Break II 相似,不过需要记住单词的前驱。用深度搜索算法获得结果输出。参考自:https://github.com/soulmachine/leetcode*/class Solution {public: vector<string> wordBreak(string s, unordered_set<string>& wordDict) { if(s.empty()) return vector<string>(); vector<int> dp(s.size()+1, 0); vector<vector<int> > prev(s.size()+1, vector<int>(s.size()+1, 0)); dp[0] = 1; for(int i = 1; i <= s.size(); ++i){ for(int j = i - 1; j >= 0; --j){ if(dp[j] == 1 && wordDict.find(s.substr(j, i-j)) != wordDict.end()){ dp[i] = 1; prev[i][j] = 1; } } } vector<string> path; vector<string> res; get_result(s, prev, path, res, s.size()); return res; } void get_result(const string &s, const vector<vector<int> > &prev, vector<string> &path, vector<string> &res, int cur) { if(cur == 0){ string tmp; for(int i = path.size()-1; i >= 0; --i){ tmp += path[i]; if(i > 0) tmp += " "; } res.push_back(tmp); return; } else{ for(int i = s.size()-1; i >= 0; --i){ if(prev[cur][i]){ path.push_back(s.substr(i, cur-i)); get_result(s, prev, path, res, i); path.pop_back(); } } } }};
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
- 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
- HDU 1331 Function Run Fun
- meta大全
- JVM中堆栈以及内存区域分配
- 队列(Queue) C 语言实现
- HDU 2993 MAX Average Problem (斜率优化)
- LeetCode之Word Break II
- hibernate 多对一单向映射配置文件的配置
- Java名词解释
- windwos 8三大版本的区别
- 【剑指Offer面试题】 九度OJ1516:调整数组顺序使奇数位于偶数前面
- IOS应用内购功能
- 使用DataPicker以及TimePicker显示日历和时间
- centos 7 安装开源数据统计piwik
- 用python获取当前登陆系统的用户名