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

刷代码随想录有感(116):动态规划——单词拆分

题干:

代码:

class Solution {
public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set<string>set(wordDict.begin(), wordDict.end());vector<bool>dp(s.size() + 1, false);dp[0] = true;for(int j = 0; j <= s.size(); j++){//背包for(int i = 0; i < j; i++){//物品string tmp = s.substr(i, j - i);if(set.find(tmp) != set.end() && dp[i] == true){dp[j] = true;}}}return dp[s.size()];}
};

定义dp数组:当长度为j时是否能拆成字典里的单词,返回true/false.

递推公式:如果j前面的长度i能被拆分,且从i到j的长度也能在字典里找到则dp[j] = true.

初始化:dp[0]一定要是true,否则后面推不出来.

遍历顺序:背包严格按照单词排列顺序,‘apple’ + ‘pen' + 'apple' != 'pen' + 'apple' + 'apple',所以先背包再物品.

很奇怪,这次遍历物品竟然没有到头,而是限制在j长度以内。

http://www.lryc.cn/news/382410.html

相关文章:

  • CSS-0_1 CSS和层叠(样式优先级、内联样式、选择器 用户代理样式)
  • 科技赋能冷链园区:可视化带来全新体验
  • 高通安卓12-安卓系统定制2
  • 高中数学:数列-解数列不等式问题的常用放缩技巧(重难点)
  • [图解]企业应用架构模式2024新译本讲解17-活动记录1
  • [C++深入] --- malloc/free和new/delete
  • Spcok测试代码抛异常场景
  • 【漏洞复现】脸爱云一脸通智慧管理平台 SystemMng 管理用户信息泄露漏洞(XVE-2024-9382)
  • 新手如何入门Web3?
  • React.FC`<ChildComponentProps>`解释
  • 2024-06-24力扣每日一题
  • pyhon模块以及常用的第三方模块
  • shell脚本—快速修改centos网络配置
  • 线程池概念、线程池的不同创建方式、线程池的拒绝策略
  • 示例:WPF中如何绑定ContextMenu和Menu
  • 区块链小故事
  • Java | Leetcode Java题解之第167题两数之和II-输入有序数组
  • 项目训练营第三天
  • 计算机组成原理 | CPU子系统(1)基本概述
  • 无引擎游戏开发(2):最简游戏框架 | EasyX制作井字棋小游戏I
  • 排书 IDA*
  • playwright录制脚本原理
  • awk脚本监控
  • Python高压电容导电体和水文椭圆微分
  • 微信小程序 引入MiniProgram Design失败
  • Java 8 Date and Time API
  • pyppeteer模块经常使用的功能,相关操作案例
  • nginx+keepalived+tomcat集群实验
  • vue脚手架 axios的二次封装
  • 人机恋爱新趋势:与AI男友谈恋爱的甜蜜与挑战