GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — 单词拆分 II-140 · Issue #95 · sl1673495/leetcode-javascript Open Labels Description给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。 说明: 分隔时可以重复使用字典中的单词。 来源:力扣(LeetCode) 思路动态规划和单词拆分 139 的思路是一样的。 只不过每次可以分割的时候,把当前可以分割成的所有字符串都保存在一个数组里放入 这题的坑在于,官方的这个用例会爆栈: 用一个技巧可以绕过去,在最开始的时候先把 let wordBreak = function (s, wordDict) { let uniqSChars = uniq(s.split("")) let uniqWordDictChars = uniq(wordDict.join("")) if (uniqSChars.length > uniqWordDictChars.length) { return [] } let n = s.length if (!n) { return [] } let wordSet = new Set(wordDict) let dp = [] dp[0] = [""] for (let i = 1; i <= n; i++) { let res = [] for (let j = i; j >= 0; j--) { let word = s.slice(j, i) if (wordSet.has(word)) { if (dp[j] && dp[j].length) { for (let prev of dp[j]) { res.push(prev ? prev + " " + word : word) } } } } dp[i] = res } return dp[n] } function uniq(arr) { return Array.from(new Set(arr)) } ActivityMetadataMetadataAssigneesLabelsProjectsMilestoneRelationshipsDevelopmentIssue actions |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |