leetcode 139. Word Break | 139. 单词拆分(动态规划)
题目
https://leetcode.com/problems/word-break/
题解
时隔一天,再次遇到 dp 问题…
本题和 leetcode 375. Guess Number Higher or Lower II | 375. 猜数字大小 II(动态规划思路总结)的思路是一样的,连 dp 数组的遍历方向都是一样的(斜向)…
这是全局第 5 道没看答案的 dp 问题,所以,dp 到底是不是玄学?…
以下面的测试用例为例,斜向依次填充 dp 数组过程如图所示。
public static void main(String[] args) {Solution solution = new Solution();List<String> list = new ArrayList<>();list.add("cat");list.add("cats");list.add("and");list.add("sand");list.add("dog");list.add("catsanddog");solution.wordBreak("catsanddog", list);
}
class Solution {public boolean wordBreak(String s, List<String> wordDict) {HashSet<String> dict = new HashSet<>();for (String word : wordDict) {dict.add(word);}int n = s.length();boolean[][] dp = new boolean[n + 1][n + 1];for (int i = 1; i <= n; i++) {for (int j = i; j <= n; j++) {int L = j - i;int R = j;if (dict.contains(s.substring(L, R))) {dp[L][R] = true;} else {for (int M = L + 1; M < R; M++) {// [L...M) + [M...R)if (dp[L][M] & dp[M][R]) {dp[L][R] = true;break;}}}}}return dp[0][n];}
}
leetcode 139. Word Break | 139. 单词拆分(动态规划)相关推荐
- leetcode 140. Word Break II | 140. 单词拆分 II(动态规划)
题目 https://leetcode.com/problems/word-break-ii/ 题解 由 leetcode 139. Word Break | 139. 单词拆分(动态规划) 改造而来 ...
- 【记忆化递归+DP】LeetCode 139. Word Break
LeetCode 139. Word Break Solution1: 记忆化递归的典型套路题 参考网址:https://zxi.mytechroad.com/blog/leetcode/leetco ...
- 【DFS + 记忆化递归】LeetCode 140. Word Break II
LeetCode 140. Word Break II Solution1:我的答案 纯DFS,在第31个case时超时,还是记录一下.. class Solution { // DFS public ...
- 139. Word Break 单词拆分
Title 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词. 说明: 拆分时可以重复使用字典中的单词. 你可以假设字 ...
- LeetCode 139. 单词拆分(动态规划)
题目描述 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词. 说明: 拆分时可以重复使用字典中的单词. 你可以假设字典 ...
- 101. Leetcode 139. 单词拆分 (动态规划-完全背包)
步骤一.确定状态: 确定dp数组及下标含义 dp[j]表示的是长度为j的字符串(容量为j的背包)能否被拆分成1个或者多个单词 里面的值, 所以这里的dp[j]非1即0 步骤二.推断状态方程: if d ...
- 139. Word Break
一.题目 1.审题 2.分析 给出一个字符串 S,一个字典表 dict,判断 S 是否能由 dict 中的字符串所组成,其中 dict 中的字符串能够多次使用. 二.解答 1.思路: 方法一. 使用一 ...
- LeetCode 79 Word Search(单词查找)
题目链接:https://leetcode.com/problems/word-search/#/description 给出一个二维字符表,并给出一个String类型的单词,查找该单词是否出现在该二 ...
- leetcode 343. Integer Break | 343. 整数拆分(Java)
题目 https://leetcode.com/problems/integer-break/ 题解 一开始以为,只要是 3 个数相加就可以,于是在错误的方向上越走越远: 后来发现并不只是 3 个数, ...
最新文章
- Java线程池实现原理及其在美团业务中的实践
- C++ TypeId简介与使用
- 剑指offer-用两个栈实现一个队列
- 别不信!servlet获取到的参数值,也许完全出乎你的意料!
- Python 持续点火,跟进还是观望?
- java websocket
- TortoiseSVN 命令 (命令行执行工具)
- Jmeter-阶梯场景设置
- 线程池和任务工厂实现多线程异步运行
- libxml主要函数说明 (一)
- git version可以卸载吗_「玩转Git命令」作为代码奴,该安装Git啦
- 音乐播放器代码和网页播放器代码
- Ant Design Pro从零到一(页面创建)
- matlab 2014b 图像,使用Matlab 2014b的锯齿状轮廓
- 计算机乱七八糟小知识备忘录
- js基础面试题整理(包含ES5,ES6)
- springmvc(四) springmvc的数据校验的实现
- Virgo与Maven整合开发环境搭建(二)
- 读写文本文件-StreamReader和StreamWriter
- 数字信号处理中的声学基础知识
热门文章
- 洛谷 - P3356 火星探险问题(最大费用最大流+拆点+路径打印)
- 洛谷 - P1725 琪露诺(动态规划+单调队列优化)
- HDU - 6393 Traffic Network in Numazu(线段树+LCA+树链剖分+并查集)
- HDU - 3533 Escape(预处理+A*)
- 南通工学院计算机97级,2021年南通理工学院录取结果查询网址入口及录取结果公布时间...
- POJ1151(线段树+扫描线求矩形面积并)
- 梅朵是藏语鲜花的意思
- 像加载DLL一样加载EXE
- mov eax,dword ptr fs:[0] 指令
- 网络编程释疑之:单台服务器上的并发TCP连接数可以有多少