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"].
参考博文:https://segmentfault.com/a/119000000369869
https://blog.csdn.net/u013395544/article/details/79819242
https://blog.csdn.net/linhuanmars/article/details/22358863
import java.util.*;
public class Solution {
public ArrayList<String> list = new ArrayList<>();
public ArrayList<String> wordBreak(String s, Set<String> dict) {
dfs(s, s.length(), "", dict);
return list;
}
private void dfs(String s, int index, String str, Set<String> dict) {
if (index <= 0) {
if (str.length() > 0) {
//存放由单词组成的句子
list.add(str.substring(0, str.length() - 1));
}
}
for (int i = index; i >= 0; i--) {
if (dict.contains(s.substring(i, index))) {
dfs(s, i, s.substring(i, index) + " " + str, dict);
}
}
}
}