【记忆化递归+DP】LeetCode 139. Word Break
LeetCode 139. Word Break
Solution1:
记忆化递归的典型套路题
参考网址:https://zxi.mytechroad.com/blog/leetcode/leetcode-139-word-break/
class Solution { //记忆化递归!
public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set<string> dict(wordDict.begin(), wordDict.end());return my_word(s, dict);}private:unordered_map<string, bool> word_map;bool my_word(string s, unordered_set<string>& dict) {if (word_map.count(s)) return word_map[s]; //已经判断过的子串if (dict.count(s)) return word_map[s] = true;for (int i = 1; i < s.size(); i++) {string temp1 = s.substr(0, i);string temp2 = s.substr(i);if (my_word(temp1, dict) && dict.count(temp2)) return word_map[s] = true;}return word_map[s] = false;}
};
Solution2:
此题也是典型的动态规划题目
参考网址:https://www.youtube.com/watch?v=il8Oi21WZN0
时间复杂度:O(n2−−n3)O(n2−−n3)O(n^2--n^3)
空间复杂度:O(n)O(n)O(n)
class Solution {
public:bool wordBreak(string s, vector<string>& wordDict) {int len = s.length();unordered_set<string> dict(wordDict.begin(), wordDict.end());vector<bool> dp(len + 1, false);s = " " + s;dp[0] = true;for (int i = 1; i <= len; i++) {for (int j = 0; j < i; j++) {string temp = s.substr(j + 1, i - j);if (dp[j] && dict.count(temp)) {dp[i] = true;break;}}}return dp[len];}
};
【记忆化递归+DP】LeetCode 139. Word Break相关推荐
- 【DFS + 记忆化递归】LeetCode 140. Word Break II
LeetCode 140. Word Break II Solution1:我的答案 纯DFS,在第31个case时超时,还是记录一下.. class Solution { // DFS public ...
- LeetCode 87. 扰乱字符串(记忆化递归 / DP)
文章目录 1. 题目 2. 解题 2.1 记忆化递归 2.2 动态规划 1. 题目 给定一个字符串 s1,我们可以把它递归地分割成两个非空子字符串,从而将其表示为二叉树. 下图是字符串 s1 = &q ...
- LeetCode 514. 自由之路(记忆化递归 / DP)
文章目录 1. 题目 2. 解题 1. 题目 电子游戏"辐射4"中,任务"通向自由"要求玩家到达名为"Freedom Trail Ring" ...
- 【DFS + 记忆化递归 + DP】LeetCode 91. Decode Ways
LeetCode 91. Decode Ways Solution1:我的答案 还是记录一下,最容易想到的是DFS,但是在第223/238个case上就超时了... class Solution { ...
- leetcode 139. Word Break | 139. 单词拆分(动态规划)
题目 https://leetcode.com/problems/word-break/ 题解 时隔一天,再次遇到 dp 问题- 本题和 leetcode 375. Guess Number High ...
- 【重点!记忆化递归+DP】LeetCode 72. Edit Distance
LeetCode 72. Edit Distance 参考链接:https://zxi.mytechroad.com/blog/dynamic-programming/leetcode-72-edit ...
- leetcode 140. Word Break II | 140. 单词拆分 II(动态规划)
题目 https://leetcode.com/problems/word-break-ii/ 题解 由 leetcode 139. Word Break | 139. 单词拆分(动态规划) 改造而来 ...
- LeetCode 337. 打家劫舍 III(记忆化+递归)
文章目录 1. 题目 1.1 相关题目: 2. 解题 2.1 递归 2.2 记忆化递归 1. 题目 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区.这个地区只有一个入口,我们称 ...
- 爬楼梯与路径类题目记忆化递归与动态规划双解法(Leetcode题解-Python语言)
70. 爬楼梯(剑指 Offer 10- II. 青蛙跳台阶问题) 递归(英语:Recursion),是指在函数的定义中使用函数自身的方法.有意义的递归通常会把问题分解成规模缩小的同类子问题,当子问题 ...
最新文章
- 有意思的onerror的用法
- Codeforces Round #609 (Div. 2) D. Domino for Young 黑白染色
- VR全景看年评!PConline年度评测盛典等你来体验
- 1.Java 面试题整理(基础篇一)
- Python直接调用C库的printf()函数打印一条消息
- Hls之播放遇到的坑
- xmind 使用备忘
- Google Calendar Sync_ 把 Microsoft Outlook 同步到 G...
- Entity Framework 延伸系列目录
- 函数在某点附近有界,但该点无极限值的例子
- springboot2.3.9使用spring data elasticsearch兼容低版本es(6.X)
- 机器人炒菜感想_炒菜机器人
- pyqt 取鼠标处文字_侧裙可拆按键随心装,黑爵GTi模块化游戏鼠标评测
- [一起来学mysql]-----MySQl的增删改查
- 北邮信通复试题c语言,北邮计算机考研复试题的C语言解答精选.pdf
- ES6——class类的继承与静态方法
- Python——切片操作
- C语言中的自定义函数
- 赛博朋克宣言1993_赛博朋克2077和未来武器
- sqlserver 查看服务器名称以及sql语句跨服务器查询设置
热门文章
- C# 怎样判断 datagridview 中的checkbox列是否被选中
- pytorch---之pin_memory
- Kalibr源码学习(一): 重投影误差
- OpenCV图像处理(17)—— 各种二值化对比
- python静态方法怎么调用_python实例方法、静态方法和类方法
- MFC UpdateData
- android开发 解析 b5,张绍文android开发高手课读书笔记4-启动优化篇
- postgresql 自定义表变量_Oracle GoldenGate新支持开源关系型数据库PostgreSQL
- OpenCV-Python实战(23)——将OpenCV计算机视觉项目部署到云端
- StackGAN详解与实现(使用tensorflow2.x实现)——利用文本合成逼真的图像