題目鏈接:https://oj.leetcode.com/problems/word-break-ii/
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"].
思路:還是DFS遞歸遍歷。采用動態規劃比較麻煩,需要存儲當前位置能夠實現 word break的所有結果的和,空間復雜度很高,不劃算,代碼寫起來還很麻煩。
public class Solution { public ListwordBreak(String s, Set dict) { List rsList = new ArrayList (); if (s == null || s.length() < 1 || dict == null) { return rsList; } wordBreakHelper(s, 0, "", dict, rsList); return rsList; } public void wordBreakHelper(String s, int start, String tempStr, Set dict, List rsList) { if (start >= s.length()) { rsList.add(tempStr); return; } for (int i = start + 1; i <= s.length(); i++) { String temp = s.substring(start, i); if (dict.contains(temp)) { String newTempStr; if (tempStr.length() < 1) { newTempStr = temp; } else { newTempStr = tempStr + " " + temp; } wordBreakHelper(s, i, newTempStr, dict, rsList); } } } }