leetcode 140. Word Break II

来源:互联网 发布:hosts 一个域名多个ip 编辑:程序博客网 时间:2024/06/08 00:56

140. Word Break II           




public boolean wordBreakcheck(String s, List<String> dict) {
if (s == null || s.length() == 0)
return true;
boolean[] res = new boolean[s.length() + 1];
res[0] = true;
for (int i = 0; i < s.length(); i++) {
StringBuilder str = new StringBuilder(s.substring(0, i + 1));
for (int j = 0; j <= i; j++) {
if (res[j] && dict.contains(str.toString())) {
res[i + 1] = true;
break;
}
str.deleteCharAt(0);
}
}
return res[s.length()];
}


public List<String> wordBreak(String s, List<String> wordDict) {
List<String> res = new ArrayList<String>();
if (s.length() == 0 || wordDict.size() == 0) {
return res;
}
if(wordBreakcheck(s, wordDict)){
dfs(s, res, wordDict, "", 0);
}

return res;


}


public void dfs(String s, List<String> res, List<String> dict, String item, int start) {
if (start >= s.length()) {
res.add(item);
return;
}
StringBuilder sb = new StringBuilder();
for (int i = start; i < s.length(); i++) {
sb.append(s.charAt(i));
if (dict.contains(sb.toString())) {
String newItem = new String();
if (item.length() > 0) {
newItem = item + " " + sb.toString();
} else {
newItem = sb.toString();
}
dfs(s, res, dict, newItem, i + 1);


}
}
}
原创粉丝点击