1.题目描述:
给定一个字符串s和一个字符串字典wordDict,在字符串s中增加空格来构建一个句子,使得句子中所有的单词都在词典中。以任意顺序返回所有这些可能的句子。注意:词典中的同一个单词可能在分段中被重复使用多次。
2.回溯:
class Solution {
StringBuilder sb = new StringBuilder();
List<String> list = new ArrayList<>();
public List<String> wordBreak(String s, List<String> wordDict) {
backTracking(s, wordDict, 0);
return list;
}
public void backTracking(String s, List<String> wordDict, int index) {
if (index == s.length()) {
StringBuilder sb1 = new StringBuilder(sb);
sb1.deleteCharAt(sb1.length() - 1);
list.add(new String(sb1.toString()));
return;
}
for (int i = index; i < s.length(); i++) {
String sub = s.substring(index, i + 1);
if (!wordDict.contains(sub)) continue;//剪枝
sb.append(sub);
sb.append(' ');
backTracking(s, wordDict, i + 1);
sb.delete(sb.length() - sub.length() - 1, sb.length());
}
}
}