140. Word Break II
生活随笔
收集整理的這篇文章主要介紹了
140. Word Break II
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 1 題目理解
- 2 回溯+記憶化
1 題目理解
140與130的區(qū)別是,當(dāng)字符串可分的時(shí)候,要求返回具體的分割字符串。
2 回溯+記憶化
對(duì)于字符串s,如果前面一部分是單詞列表中的詞,則拆分出這個(gè)單詞,右邊的繼續(xù)分割。
分割過程中,對(duì)起始下標(biāo)i,已經(jīng)分割過的,用map緩存。
使用字典樹也可以加快搜索速度。
補(bǔ)充:也可以在139的基礎(chǔ)上做。在找到0到i可以分割的時(shí)候,記錄下分割方式。當(dāng)然這種方法也可以加上Trie樹。
class Solution {public List<String> wordBreak(String s, List<String> wordDict) {Map<Integer,List<String>> resultMap = new HashMap<Integer,List<String>>();int n = s.length();boolean[] dp = new boolean[n+1];//從0到i可以被分解dp[0] = true;for(int i=1;i<=n;i++){resultMap.put(i, new ArrayList<String>());for(int j=0;j<i;j++){if(dp[j]==true && wordDict.contains(s.substring(j,i))){dp[i]=true;if(j==0){resultMap.get(i).add(s.substring(j,i));}else{for(String pre:resultMap.get(j)){resultMap.get(i).add(pre+" "+s.substring(j,i));}} }}}return resultMap.get(n);} }總結(jié)
以上是生活随笔為你收集整理的140. Word Break II的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 代码走查工具
- 下一篇: day12-nginx