給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,在字串中增加空格來構建乙個句子,使得句子中所有的單詞都在詞典中。返回所有這些可能的句子。
說明:示例 1:
輸入:
s = "catsanddog"
worddict = ["cat", "cats", "and", "sand", "dog"]
輸出:[
"cats and dog",
"cat sand dog"
]
示例 2:輸入:
輸出:[
]解釋: 注意你可以重複使用字典中的單詞。
示例 3:輸入:
s = "catsandog"
worddict = ["cats", "dog", "sand", "and", "cat"]
輸出:
記憶性深搜dfs
我們用乙個雜湊表unordered_map,記錄拆分string的拆分結果。
每次我們對字串拆分時,都找字典中的單詞進行拆分,然後遞迴深搜剩下的字串的拆分結果,如果都能拆分,我們就將結果進行拼接,儲存在雜湊表中。詳細過程見**
unordered_map> list;
vector
dfs(
int begin,string& s,vector
& worddict)
;else}}
list[s]
= res;
return res;}}
vector
wordbreak
(string s, vector
& worddict)
leetcode 140單詞拆分
原想法 通過遍歷找出每個位點可能出現的單詞的列表,然後通過dfs遍歷找出所有的組合,有點類似於之前刷pat時用的dijstra dfs,如下 class solution else if cursor length 先通過迴圈搜尋出所有開始點可能出現的單詞 for int i 0 i全是a的那個點執...
LeetCode140 單詞拆分II
leetcode140.單詞拆分ii 動態規劃 dfs 回溯。動態規劃 根據139單詞拆分使用動態規劃dp j i 表示從s j.i 1 是可拆分的,可以理解為長度len的字串有len 1可以分割的位置。dfs 遞迴的遍歷當前字串,vectorpath用來記錄能夠拆分的一條路徑。回溯 同一分支的多種...
LeetCode 140 單詞拆分 II
問題描述 給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,在字串中增加空格來構建乙個句子,使得句子中所有的單詞都在詞典中。返回所有這些可能的句子。說明 示例 1 輸入 s catsanddog worddict cat cats and sand dog 輸出 cats and...