Word Break II Java
来源:互联网 发布:java开源web项目小型 编辑:程序博客网 时间:2024/05/16 06:26
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"]
.
NP-problem again, Time: depend on size of result
Solution#1: brute force of Recursive-loop, The appraoch is pretty
similar with N-Queens problem
Maintain a result List, traverse all the sub-String list
Calling recursion iff dict contain currently String(word)
public static ArrayList<String> wordBreak(String s, Set<String> dict) { ArrayList<String> res=new ArrayList<String>(); if(s==null || s.length()==0) return res; //We need to determine the word is valid or not before break in order to AC in LeetCode if(wordBreakCheck(s,dict)){ helper(s,dict,0,"",res); return res; }else{ return res; } } private static void helper(String s, Set<String> dict, int index, String curData, ArrayList<String> res){ int len=s.length(); //completed a valid word break case if(index>=len){ res.add(curData); return; } StringBuilder str=new StringBuilder(); for(int i=index;i<len;i++){ str.append(s.charAt(i)); if(dict.contains(str.toString())){ String newCurData=curData.length()>0?curData+" "+str.toString():str.toString(); //recursive call: increasing index by i+1 && update curData with newCurData helper(s,dict,i+1,newCurData,res); } } } public static boolean wordBreakCheck(String s, Set<String> dict) { if(s==null || s.length()==0) return true; int len=s.length(); boolean res[]=new boolean[len+1]; //initial res[0] res[0]=true; for(int i=0;i<len;i++){ StringBuilder tempStr=new StringBuilder(s.substring(0,i+1)); for(int j=0;j<=i;j++){ if(res[j] && dict.contains(tempStr.toString())){ res[i+1]=true; break; } tempStr.deleteCharAt(0); } } return res[len]; }
0 0
- Word Break II Java
- [Leetcode] Word Break II (Java)
- Word Break && Word Break II
- Word Break && Word Break II
- LeetCode – Word Break II (Java)
- [leetcode]140. Word Break II(Java)
- [leetcode]Word Break II
- Word Break II
- Word Break II
- LeetCode:Word Break II
- Word Break II
- Leetcode: Word Break II
- [LeetCode] Word Break II
- [LeetCode]Word Break II
- LeetCode | Word Break II
- Word Break II
- Word Break II
- [LeetCode] - Word Break II
- 如何在官网下载tomcat
- Dom4j入门指南(3)
- si用例
- 分享javascript加载外部内容
- (转载)ORACLE CASE WHEN 及 SELECT CASE WHEN的用法
- Word Break II Java
- 使用Sparkle为OS X App添加自动更新功能
- 链表 - 数据结构
- MFC绘图
- 新浪sae平台wordpress插件wp-mail-smtp邮件功能配置使用
- ant批量打包安卓应用
- JSP 九大内置对象详解以及会话跟踪
- Dom4j入门指南(4)
- dfghjk