[LeetCode] Word Break
2014-07-07 17:02
302 查看
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 =
dict =
Return true because
方法一:
DFS,
start已知,当start超过str长度时,说明全部字符串都能找到了。。
小数据可过,大数据时超时
方法二:
DP
设状态为 f(i),表示 s[0,i] 是否可以分词,则状态转移方程为
f(i) = any_of(f(j)&&s[j + 1, i] 2 dict), 0 j < i
For example, given
s =
"leetcode",
dict =
["leet", "code"].
Return true because
"leetcode"can be segmented as
"leet code".
方法一:
DFS,
start已知,当start超过str长度时,说明全部字符串都能找到了。。
小数据可过,大数据时超时
Submission Result: Time Limit Exceeded
Last executed input: | "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab", ["a","aa","aaa","aaaa","aaaaa","aaaaaa","aaaaaaa","aaaaaaaa","aaaaaaaaa","aaaaaaaaaa"] |
class Solution { public: bool wordBreak(string s, unordered_set<string> &dict) { return wordBreak(s,0, dict); } bool wordBreak(string s, int start, unordered_set<string> & dict) { size_t size = s.size(); if(size == 0) return false; if(start >= size) return true; for( int i = start; i <size; i++) { string str = s.substr(start, i-start+1); if(dict.find(str) != dict.end()) { if(wordBreak(s,i+1, dict)) return true; } } return false; } };
方法二:
DP
设状态为 f(i),表示 s[0,i] 是否可以分词,则状态转移方程为
f(i) = any_of(f(j)&&s[j + 1, i] 2 dict), 0 j < i
bool wordBreak2(string s, set<string> &dict) { vector<bool> f(s.size() + 1, false); f[0] = true; for (int i = 1; i <= s.size(); ++i) { for (int j = i - 1; j >= 0; --j) { if (f[j] && dict.find(s.substr(j, i - j)) != dict.end()) { f[i] = true; break; } } } return f[s.size()]; }
相关文章推荐
- 【LeetCode-面试算法经典-Java实现】【139-Word Break(单词拆分)】
- LeetCode _ Word Break
- (leetcode)Word Break
- 【Leetcode】Word Break
- Leetcode 139, Word Break
- leetcode:Word Break
- [LeetCode] Word Break, Solution
- 每天一道算法题(五)Leetcode – Word Break (Java)
- [LeetCode]Word Break
- LeetCode *** 139. Word Break
- [LeetCode]Word Break
- 动态规划——Word Break 拆分词句【LeetCode】
- leetcode 139. Word Break
- [Leetcode] word break 拆分词语
- LeetCode: Word Break
- [Leetcode 139, medium] Word Break
- [leetcode]139. Word Break(Java)
- LeetCode题解:Word Break
- 【LeetCode从零单排】No198.House Robber &&No91.Decode Ways&&139 word break(动态规划典型应用)
- [leetcode]Word Break