一题一句: 注意退出recursion的判断条件。
public class Solution {
public boolean wordBreakable(String s, Set
dict) {
if(s==null || s.length()==0)
return true;
boolean[] res = new boolean[s.length()+1];
res[0] = true;
for(int i=0;i
wordBreak(String s, Set
wordDict) {
List
res = new ArrayList
();
if(!(wordBreakable(s,wordDict)))
return res;
DFS(s,0,wordDict,res,"");
return res;
}
public void DFS(String s, int start, Set
dict, List
res, String item){ if(start >= s.length()) res.add(item); for(int i=start;i
0){ newItem = item + " "+ s.substring(start,i+1); }else{ newItem = s.substring(start,i+1); } DFS(s,i+1,dict,res,newItem); } } } }