回溯法 | 单词拆分 ||
class Solution { List<String> ss = new ArrayList<>(); public List<String> wordBreak(String s, List<String> wordDict) { dfs(s,wordDict,"",0); return ss; } public void dfs(String s, List<String> wordDict, String res, int idx){ if(idx==s.length()){ ss.add(res.trim()); return; } //去掉外循环 for(int j=idx+1;j<=s.length();j++){ if(wordDict.contains(s.substring(idx,j))){ int l = res.length(); res = res + " " + s.substring(idx,j); dfs(s,wordDict,res,j); res = res.substring(0,l); } } } }