Word Break
来源:互联网 发布:关键词快速排名软件 编辑:程序博客网 时间:2024/05/22 10:29
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"
.
1. DP,注意边界
public class Solution { public static boolean wordBreak(String s, Set<String> dict) { boolean[] canBreak; canBreak = new boolean[s.length()+1]; canBreak[0] = true; for (int i = 1; i <= s.length(); i++) { for (int j = 0; j < i; j++) { if (canBreak[j]) { if (dict.contains(s.substring(j, i))) { canBreak[i] = true; } } } } return canBreak[s.length()]; }}
2. memorization, top-bottom
维护一个数组,记录该element到最后的字符可不可以break。-1表示没有visit过,0表示不可以break, 1表示可以break
public class Solution { static int[] canBreak; public static boolean wordBreak(String s, Set<String> dict) { canBreak = new int[s.length()+1]; for (int i = 0; i < s.length(); i++) { canBreak[i] = -1; } canBreak[s.length()] = 1; return helper(s, dict, 0); } static boolean helper(String s, Set<String> dict, int start) { if (start == s.length()) { return true; } for(int i = start+1; i <= s.length(); i++) { if (dict.contains(s.substring(start, i))) { if (canBreak[i] == 0) { continue; } else if (canBreak[i] == 1) { return true; } else if (canBreak[i] == -1) { boolean breakable = helper(s, dict, i); if (breakable) { canBreak[i] = 1; return true; } else { canBreak[i] = 0; continue; } } } } return false; }}
3. 完全递归超时:
public boolean wordBreak(String s, Set<String> dict) { if (s.isEmpty()) { return true; } for(int i = 1; i <= s.length(); i++) { if (dict.contains(s.substring(0, i)) && wordBreak(s.substring(i), dict)) { return true; } } return false; }
0 0
- Word-break:break-word
- Word Break && Word Break ||
- word-break
- Word Break
- Word Break
- Word Break
- word break
- Word Break
- Word Break
- Word Break
- Word Break
- Word Break
- Word Break
- Word Break
- Word Break
- Word Break
- Word Break
- Word Break
- 【iOS】Swift数据类型、运算符、新增语句等小结
- WP8图片内存BUG解决办法
- Jump Game
- SVN常用命令说明
- JavaScript中的匿名函数及函数的闭包
- Word Break
- 深入理解Java内存模型(二)——重排序
- 对javascript匿名函数的理解(透彻版)
- 工作周报010
- Html(5)CSS样式入门
- 析构(Destructor)内存垃圾回收机制
- 【Android】 Canvas、Path 和 Paint 实例 (游戏开发必备)
- 周末小测——B(poj2458 Prim)
- dark corners of C++