LeetCode 139. Word Break(单词分隔)
来源:互联网 发布:六级阅读怎么提高知乎 编辑:程序博客网 时间:2024/05/16 18:32
原题网址:https://leetcode.com/problems/word-break/
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 = "leetcode"
,
dict = ["leet", "code"]
.
Return true because "leetcode"
can be segmented as "leet code"
.
方法一:递归+记忆化搜索。
public class Solution { private boolean[] visited; private boolean[] canBreak; private boolean dp(String s, int to, Set<String> wordDict) { if (to == 0) return true; if (visited[to-1]) return canBreak[to-1]; for(int i=0; i<to; i++) { if (wordDict.contains(s.substring(i)) && dp(s.substring(0,i), i, wordDict)) { visited[to-1] = true; canBreak[to-1] = true; return true; } } visited[to-1] = true; canBreak[to-1] = false; return false; } public boolean wordBreak(String s, Set<String> wordDict) { visited = new boolean[s.length()]; canBreak = new boolean[s.length()]; return dp(s, s.length(), wordDict); }}
方法二:动态规划。
public class Solution { public boolean wordBreak(String s, Set<String> wordDict) { if (null == s || "".equals(s)) return true; boolean[] canBreak = new boolean[s.length()]; canBreak[0] = wordDict.contains(s.substring(0,1)); for(int i=1; i<s.length(); i++) { if (wordDict.contains(s.substring(0, i+1))) { canBreak[i] = true; } else { for(int j=0; j<i; j++) { if (canBreak[j] && wordDict.contains(s.substring(j+1, i+1))) { canBreak[i] = true; break; } } } } return canBreak[canBreak.length-1]; }}
0 0
- LeetCode 139. Word Break(单词分隔)
- LeetCode-139. Word Break (JAVA)单词切分
- 【LeetCode】Word Break 单词拆分
- LeetCode 140. Word Break II(单词切分)
- 139. Word Break 单词切分
- LeetCode 139. Word Break
- [LeetCode]139.Word Break
- [leetcode] 139.Word Break
- leetcode 139. Word Break
- [LeetCode]139. Word Break
- 139. Word Break LeetCode
- LeetCode-139.Word Break
- LeetCode *** 139. Word Break
- LeetCode 139. Word Break
- LeetCode 139. Word Break
- [leetcode] 139. Word Break
- [leetcode] 139. Word Break
- [LeetCode] 139. Word Break
- VLAN原理详解
- 沈梦黑发骗子骗术揭秘
- OpenCV2.4.X怎样使开发出来的exe文件或软件可独立运行?
- 测试
- Memcached安装&常规错误&监控
- LeetCode 139. Word Break(单词分隔)
- 高通Android平台硬件调试之Camera
- Linux线程间同步机制_条件变量
- Android的体系结构
- Hust oj 1039 修路(二分)
- Android 面试题总结之Android 基础(一)
- 初学OBjective-C 编程心得
- 蓝桥杯基础试题 兰顿蚂蚁
- 流行移动平台自动化框架逐项比拼