当前位置: 首页 > news >正文

力扣HOT100之动态规划:139. 单词拆分


这道题之前刷代码随想录的时候已经做过了,但是现在再做一遍还是不会,直接去看视频了。感觉这道题的dp数组很难想到,感觉做不出来也是情有可原吧。这道题目也是一个完全背包问题,字典里的单词就相当于物品,而字符串相当于背包,这道题可以理解为:能否用现有的物品恰好装满整个背包?接下来直接写动规五部曲:
1.确定dp[i]的含义:在字符串的长度为i的情况下,该字符串能否用字典中的单词拼接出来
2.确定递推公式 dp[i] = dp[j, i] is in wordDict && dp[j] == true
3.dp数组初始化 dp[0] = true (无意义,只是为了递推正常进行下去)
4.确定遍历顺序:先背包,再物品(涉及排列)
5.打印数组(省略)
首先dp数组的意义就很有意思:我们逐步增加字符串的长度(背包容量),直至恢复字符串本来的长度,然后我们在逐渐增加字符串长度的过程中不停地判断当前字符串能否被字典里的单词组成,很显然,假设字符串能够被字典中的单词组成,我们就一定可以在字符串长度增加到一定程度时,发现其正好与字典中的某个单词完全相等,我们将该长度时对应的dp数组位置设置为true,然后再进一步增加字符串的长度。我们可以想象:当字符串长度为i时,前面的某一节s[0] ~ s[j - 1]可以与字典内的单词完全匹配,我们只需要判断s[j] ~s[i]这一段能否与字典中的单词匹配即可,如果能找到这样一个j,使得dp[j] == trues[j] ~s[i]这一段也能在字典中找到时,则说明字符串长度为i时,可以用字典中的单词组成,当逐渐将单词的长度扩大到原有的长度时,我们只需要判断dp[s.size()]是否为true即可。

class Solution {
public:bool wordBreak(string s, vector<string>& wordDict) {//1.确定dp[i]的含义:在字符串的长度为i的情况下,该字符串能否用字典中的单词拼接出来//2.确定递推公式  dp[i] = dp[j, i] is in wordDict && dp[j] == true//3.dp数组初始化 dp[0] = true   //无意义,只是为了递推正常进行下去//4.确定遍历顺序:先背包,再物品(涉及排列)//5.打印数组(省略)int m = s.size();vector<bool> dp(m + 1, false);//初始化dp[0] = true;for(int i = 1; i <= s.size(); i++){  //遍历背包for(int j = 0; j < i; j++){  //遍历物品string sub = s.substr(j, i - j);   //从下标为j处取长度为i - j的子串if(find(wordDict.begin(), wordDict.end(), sub) != wordDict.end() && dp[j])dp[i] = true;}}return dp[m];}
};

相关文章:

  • 牛客周赛94
  • 极智项目 | 多模态大模型推理平台-Streamlit版(支持Qwen2.5/InternVL3/KimiVL三大模型)
  • 【CBAP50技术手册】#31 Observation(观察法):BA(业务分析师)的“现场侦探术”
  • 浮点数舍入规则_编程语言对比
  • CTFHub-RCE 命令注入-过滤运算符
  • [SC]SystemC在CPU/GPU验证中的应用(二)
  • R语言错误处理方法大全
  • CRISPR-Cas系统的小型化研究进展-文献精读137
  • python打卡day41
  • vue2源码解析——响应式原理
  • CentOS 7 安装docker缺少slirp4netnsy依赖解决方案
  • C51单片机
  • Python Day38 学习
  • Java BigInteger类详解与应用
  • 使用Yolov8 训练交通标志数据集:TT100K数据集划分
  • 【MLLM】多模态LLM 2025上半年技术发展(Better、Faster、Stronger)
  • 【C语言】讲解 程序分配的区域(新手)
  • 第12讲、Odoo 18 权限控制机制详解
  • 【plink 和vcftools使用】从 VCF 文件中提取指定 SNP 的 REF/ALT 方法
  • ICML 2025 Spotlight | 机器人界的「Sora」!让机器人实时进行未来预测和动作执行!
  • 做外贸相关的网站/湖州网站seo
  • 网站制作教程ppt/seo性能优化
  • 通过ip直连打开网站要怎么做/买友情链接有用吗
  • 网站做百度权重排名论坛/磁力搜索器在线
  • 35互联做的网站如何/互联网域名交易中心
  • 做搜狗pc网站排名/今日热搜第一名