140. 單詞拆分 ii
給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,在字串中增加空格來構建乙個句子,使得句子中所有的單詞都在詞典中。返回所有這些可能的句子。
說明:分隔時可以重複使用字典中的單詞。
你可以假設字典中沒有重複的單詞。
示例 1:
輸入:s = "catsanddog"
worddict = ["cat", "cats", "and", "sand", "dog"]
輸出:[
"cats and dog",
"cat sand dog"
]示例 2:
輸入:s = "catsandog"
worddict = ["cats", "dog", "sand", "and", "cat"]輸出:
思路分析:字串切割,典型的回溯問題,但是直接回溯的話,會超時,所以要新增記憶的小本本。
unordered_map> memo;
vectorwordbreak(string s, vector& worddict)
vectorbacktrack(string &s,unordered_set&dict,int start)
if(start>=s.size());
}vectorres;
for(int i=start;itmp=backtrack(s,dict,i+1);
for(auto v:tmp)}}
backtrack(s,dict,0);
return memo[0];
}void backtrack(string &s,unordered_set&dict,int start);
return;
}for(int i=start;i}}}
}
140 單詞拆分 II
給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,在字串中增加空格來構建乙個句子,使得句子中所有的單詞都在詞典中。返回所有這些可能的句子。說明 分隔時可以重複使用字典中的單詞。你可以假設字典中沒有重複的單詞。示例 1 輸入 s catsanddog worddict cat ca...
140 單詞拆分 II
給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,在字串中增加空格來構建乙個句子,使得句子中所有的單詞都在詞典中。返回所有這些可能的句子。想到了單詞拆分,可以用動態規劃先判斷字串s中每個位置i是否可以拆分為單詞,dp i 表示 0,i 可以拆分,然後就可以根據dp i 來解決這個...
140 單詞拆分 II
題目描述 給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,在字串中增加空格來構建乙個句子,使得句子中所有的單詞都在詞典中。返回所有這些可能的句子。說明 示例 1 輸入 s catsanddog worddict cat cats and sand dog 輸出 cats and...