【LeetCode】Word Break II 動態規劃
題目:Word Break
要求找到所有能夠有字典中的詞重組成目標串的結果
public class Solution {
public static List<String> wordBreak(String s, Set<String> dict) {
List<String> dp[] = new ArrayList[s.length()+1];
dp[0] = new ArrayList<String>();
for(int i=0; i<s.length(); i++){
//i是開始位置
if( dp[i] == null ) continue; //前面的部分必須是可以匹配的
for(String word:dict){
int len = word.length();
int end = i+len;
if(end > s.length()) continue;
if(s.substring(i,end).equals(word)){
if(dp[end] == null){
dp[end] = new ArrayList<String>();
}
dp[end].add(word);//記錄上一個位置
}
}
}
List<String> ans = new LinkedList<String>();
if(dp[s.length()] == null) return ans;
ArrayList<String> tmp = new ArrayList<String>();
dfsStringList(dp,s.length(),ans, tmp);
return ans;
}
public static void dfsStringList(List<String> dp[],int end,List<String> res, ArrayList<String> tmp){
if(end <= 0){
String ans = tmp.get(tmp.size()-1);
for(int i=tmp.size()-2; i>=0; i--)
ans += (" " + tmp.get(i) );
res.add(ans);
return;
}
for(String str:dp[end]){
tmp.add(str);
dfsStringList(dp,end-str.length(), res, tmp);
tmp.remove(tmp.size()-1);
}
}
}
相關文章
- 【LeetCode】Word Break 動態規劃LeetCode動態規劃
- 動態規劃——字串分割(Word Break)動態規劃字串
- Leetcode-Word Break IILeetCode
- Word Break II leetcode javaLeetCodeJava
- LeetCode140:Word Break IILeetCode
- LeetCode 分割回文串II(動態規劃)LeetCode動態規劃
- Leetcode Word BreakLeetCode
- [leetcode] 動態規劃(Ⅰ)LeetCode動態規劃
- LeetCode-Word BreakLeetCode
- Word Break leetcode javaLeetCodeJava
- leetcode:動態規劃( hard )LeetCode動態規劃
- [每日一題]140. Word Break II每日一題
- LeetCode139:Word BreakLeetCode
- 【圖解動態規劃】打家劫舍 II(四種解法)圖解動態規劃
- leetcode總結——動態規劃LeetCode動態規劃
- leetcode題解(動態規劃)LeetCode動態規劃
- LeetCode動態規劃總結LeetCode動態規劃
- 動態規劃專題之----213. House Robber II動態規劃
- 【leetcode】741 摘櫻桃(動態規劃)LeetCode動態規劃
- leetcode-動態規劃總結LeetCode動態規劃
- 【動態規劃(一)】動態規劃基礎動態規劃
- [LeetCode] 動態規劃題型總結LeetCode動態規劃
- Leetcode 編輯距離(動態規劃)LeetCode動態規劃
- LeetCode 動態規劃 House Robber 習題LeetCode動態規劃
- [leetcode 1235] [動態規劃]LeetCode動態規劃
- LeetCode-Word Pattern IILeetCode
- UVA 1401 Remember the Word(用Trie加速動態規劃)REM動態規劃
- 動態規劃動態規劃
- 【LeetCode動態規劃#08】完全揹包問題實戰與分析(零錢兌換II)LeetCode動態規劃
- LeetCode入門指南 之 動態規劃思想LeetCode動態規劃
- LeetCode:動態規劃+貪心題目整理LeetCode動態規劃
- LeetCode 343. 整數拆分--動態規劃LeetCode動態規劃
- 【LeetCode】55. 跳躍遊戲 (動態規劃)LeetCode遊戲動態規劃
- Leetcode-Word Ladder IILeetCode
- Word Ladder II leetcode javaLeetCodeJava
- 動態規劃分析動態規劃
- 動態規劃(DP)動態規劃
- 動態規劃初步動態規劃