139. Word Break
2018-03-18 23:40
323 查看
使用动态规划的方法。public class Solution {
public boolean wordBreak(String s, Set<String> dict) {
boolean[] f = new boolean[s.length() + 1];
f[0] = true;
/* First DP
for(int i = 1; i <= s.length(); i++){
for(String str: dict){
if(str.length() <= i){
if(f[i - str.length()]){
if(s.substring(i-str.length(), i).equals(str)){
f[i] = true;
break;
}
}
}
}
}*/
//Second DP
for(int i=1; i <= s.length(); i++){
for(int j=0; j < i; j++){
if(f[j] && dict.contains(s.substring(j, i))){
f[i] = true;
break;
}
}
}
return f[s.length()];
}
}
使用DFS的方法,注意使用了HashSet对扫描过的失败节点进行了标记。public class Solution {
public boolean wordBreak(String s, Set<String> dict) {
// DFS
Set<Integer> set = new HashSet<Integer>();
return dfs(s, 0, dict, set);
}
private boolean dfs(String s, int index, Set<String> dict, Set<Integer> set){
// base case
if(index == s.length()) return true;
// check memory
if(set.contains(index)) return false;
// recursion
for(int i = index+1;i <= s.length();i++){
String t = s.substring(index, i);
if(dict.contains(t))
if(dfs(s, i, dict, set))
return true;
else
set.add(i);
}
set.add(index);
return false;
}
}
相关文章推荐
- LeetCode 139. Word Break
- 139 Word Break [Leetcode]
- leetcode——139——Word Break
- Leetcode 139. Word Break (Medium) (cpp)
- 139. Word Break
- 139. Word Break
- [leetcode]139. Word Break(Java)
- leetcode 139. Word Break
- 【LeetCode】139. Word Break
- [leetcode] 139.Word Break
- LeetCode 139 Word Break
- Leetcode139: Word Break
- 【Leetcode】139. Word Break
- [leetcode]139. Word Break
- LeetCode139:Word Break
- 139. Word Break
- Leetcode 139. Word Break | DP
- [LeetCode]139.Word Break
- 139. Word Break
- [leetcode] 139. Word Break