題目連結:
題目意譯:
給定一個字串 s 以及一個字串之字典 wordDict,在 s 中加入若干個空白來形成一個句子,並使得該句子中的字詞都是字典中的合法字詞。回傳所有可能的句子,可以按任意順序排列。
注意到在一個字串分解中,字典中同一個字詞可以使用複數次。
限制:
1 ≦ s.length ≦ 20
1 ≦ wordDict.length ≦ 1000
1 ≦ wordDict[i].length ≦ 10
s 和 wordDict[i] 只由小寫英文字母組成。
wordDict 中所有字串皆相異。
輸入之生成滿足答案的長度不會超過 10 ^ 5。
範例測資:
範例 1:
輸入: s = "catsanddog", wordDict = ["cat","cats","and","sand","dog"]
輸出: ["cats and dog","cat sand dog"]
範例 2:
輸入: s = "pineapplepenapple", wordDict = ["apple","pen","applepen","pine","pineapple"]
輸出: ["pine apple pen apple","pineapple pen apple","pine applepen apple"]
解釋: 注意到你可以多次使用一個字典中的字詞。
範例 3:
輸入: s = "catsandog", wordDict = ["cats","dog","sand","and","cat"]
輸出: []
解題思維:
由於我們要「所有」可能的組合,因此遞迴列舉的方式(即 Top-Down)會好寫很多。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。