LeetCode-Word Break II
2014-09-10 11:37
344 查看
题目:https://oj.leetcode.com/problems/word-break-ii/
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 =
dict =
A solution is
源码:Java版本
算法分析:动态规划。时间复杂度O(n^2),空间复杂度O(n^2)
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"].
源码:Java版本
算法分析:动态规划。时间复杂度O(n^2),空间复杂度O(n^2)
public class Solution { public List<String> wordBreak(String s, Set<String> dict) { boolean[] f=new boolean[s.length()+1]; //b[i][j] 为true,表示s[j, i) 是一个合法单词,可以从j 处切开 boolean[][] b=new boolean[s.length()+1][s.length()]; f[0]=true; for(int i=1;i<=s.length();i++) { for(int j=i-1;j>=0;j--) { if(f[j]&&dict.contains(s.substring(j,i))) { f[i]=true; b[i][j]=true; } } } List<String> results=new ArrayList<String>(); Stack<String> path=new Stack<String>(); genPath(s,b,s.length(),path,results); return results; } //DFS 遍历树,生成路径 private void genPath(String s,boolean[][] b,int current,Stack<String> path,List<String> results){ if(current==0) { Stack<String> temp=(Stack<String>)(path.clone()); String str=""; if(!temp.isEmpty()) { str+=temp.pop(); } while(!temp.isEmpty()) { str+=" "+temp.pop(); } results.add(str); return; } for(int i=0;i<current;i++) { if(b[current][i]) { path.add(s.substring(i,current)); genPath(s,b,i,path,results); path.pop(); } } } }
相关文章推荐
- [LeetCode]Word Break II
- LeetCode: Word Break II
- 【leetcode】Word Break && Word Break II
- [LeetCode] Word Break II
- leetcode — word-break-ii
- Leetcode_word-break-ii
- LeetCode 140 Word Break II--In C++
- LeetCode 140 Word Break II (DFS 分词方法 推荐)
- [LeetCode] 140. Word Break II 单词拆分II
- Leetcode: Word Break II
- LeetCode--Word Break II 拆分词句之二
- LeetCode140. Word Break II
- LeetCode - Word Break II
- leetcode题目:Word Break和Word Break II
- leetcode做题总结,回溯法(N-Queens, N-QueensII,Combination SumI&II,wordbreak II, SubsetsI&II)
- LeetCode: Word Break II 解题报告
- 【leetcode】Word Break II
- LeetCode | Word Break II
- [LeetCode] Word Break II
- [LeetCode] WordBreak II, Solution