140. Word Break II(dp)
来源:互联网 发布:c语言编写可视化界面 编辑:程序博客网 时间:2024/04/27 18:08
题目:
Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where each word is a valid dictionary word.
Return all such possible sentences.
For example, given
s = "catsanddog"
,
dict = ["cat", "cats", "and", "sand", "dog"]
.
A solution is ["cats and dog", "cat sand dog"]
.
思路:
采用dp求出map[i][j],表示i到j在词典中。
采用深搜,求出每一种分割。
代码:
public class Solution { public List<String> wordBreak(String s, Set<String> wordDict) { List<String> result = new ArrayList<String>(); List<String> path = new ArrayList<String>(); boolean[] dp = new boolean[s.length()+1]; boolean[][] map = new boolean[s.length()+1][s.length()+1]; dp[0] = true; for(int i=0;i<s.length();i++) { if(dp[i]) { for(int len = 1;len<s.length()-i+1;len++) { if(wordDict.contains(s.substring(i, i+len))) { dp[i+len]= true; map[i][i+len]=true; } } } } if(dp[s.length()]){ dfs(map,result,path,0,s); } return result; } private void dfs(boolean[][] map,List<String> result,List<String> path,int start,String s) { if(start == s.length()) { String temp=""; for(String str:path) { temp=temp+str+" "; } result.add(temp.substring(0, temp.length()-1)); } for(int i=0;i<s.length()+1;i++) { if(map[start][i]) { path.add(s.substring(start, i)); dfs(map,result,path,i,s); path.remove(path.size()-1); } } }}
0 0
- 140. Word Break II(dp)
- LeetCode 140. Word Break II (DP+DFS)
- 140. Word Break II 分词 DP
- 140.Word Break II
- 140. Word Break II
- 140. Word Break II
- 140. Word Break II
- 140. Word Break II
- 140. Word Break II
- 140. Word Break II
- 140. Word Break II
- 140. Word Break II
- 140. Word Break II
- 140. Word Break II
- 140. Word Break II
- 140. Word Break II
- 140. Word Break II
- LeetCode:Word Break II(DP)
- 编程-数据结构篇
- 排序分析
- git基础类的命令
- 面试题31:连续子数组的最大和(java)
- JZOJ4715树上路径 点分治
- 140. Word Break II(dp)
- 使用GDB调试python调用的C++共享库
- 使用生成器和列表生成式来实现杨辉三角
- [leetcode] 381. Insert Delete GetRandom O(1) - Duplicates allowed
- onActivityResult没响应
- 【HDU】2093 - 考试排名(结构体排序)
- Linux Shell关于传入时间字符串的修改
- Node.js中创建和管理外部进程详解
- Android 开发相关工具