代码随想录算法训练营第四十六天 | 139.单词拆分、多重背包

139.单词拆分

题目链接:139.单词拆分

给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true

文章讲解/视频讲解:https://programmercarl.com/0139.%E5%8D%95%E8%AF%8D%E6%8B%86%E5%88%86.html

思路

这是一个完全背包问题,其中wordDict中的每个字符串为物品,字符串s为背包。dp[j]代表了在当前遍历下,由s的下标范围[0, j - 1]构成的子字符串能不能被拼接出来。由于这里需要考虑到每个字符串的拼接先后顺序,因此需要采用先遍历背包容量,再遍历物品的方法。初始赋值时,令dp[0] = true,其余初值均赋予false。

dp数组的递推式为:

dp[j] = dp[j] || (dp[j - wordDict[i].size()] && s.substr(j - wordDict[i].size(), wordDict[i].size()) == wordDict[i]);

C++实现

class Solution {
public:bool wordBreak(string s, vector<string>& wordDict) {vector<bool> dp(s.size() + 1, false);dp[0] = true;for(int j = 0;j<=s.size();j++){for(int i = 0;i<wordDict.size();i++){if(j >= wordDict[i].size()){dp[j] = dp[j] || (dp[j - wordDict[i].size()] && s.substr(j - wordDict[i].size(), wordDict[i].size()) == wordDict[i]);}}}return dp[s.size()];}
};

多重背包

文章讲解:https://programmercarl.com/%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80%E5%A4%9A%E9%87%8D%E8%83%8C%E5%8C%85.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/652275.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Codeforces Round 921 (Div. 2) (C贪心 D期望数学? E线段树)

A&#xff1a; 长度最小就是每k个小写字母形成一组&#xff0c;这样能保证最短的拥有全部子序列 #include<bits/stdc.h> using namespace std; const int N 1e610,M2*N,mod998244353; #define int long long typedef long long LL; typedef pair<int, int> PII;…

GoJS—交互式图表开发的神器(海量案例)

一、GoJS是什么&#xff1a; GoJS是一个用于创建交互式可视化图表和图形的JavaScript库。它提供了丰富的功能和工具&#xff0c;使开发人员能够轻松地构建各种类型的图表&#xff0c;包括流程图、组织结构图、网络拓扑图等。GoJS具有灵活的布局和样式设置&#xff0c;可以通过简…

新概念英语第二册(43)下

【Key structures】Can and Be able to 情态助动词 can/could 用于表示请求别人允许或答复时的情况: Can/Could I borrow you pen? can 有时可以表示可能性&#xff1a; I can have lunch with your tomorrow if you like. 在表示天生的或学到的能力时&#xff0c;can/could 可…

Python中Numba库装饰器

一、运行速度是Python天生的短板 1.1 编译型语言&#xff1a;C 对于编译型语言&#xff0c;开发完成以后需要将所有的源代码都转换成可执行程序&#xff0c;比如 Windows 下的.exe文件&#xff0c;可执行程序里面包含的就是机器码。只要我们拥有可执行程序&#xff0c;就可以随…

基于STM32的智能手环设计与实现

需要原理图工程&#xff0c;源码&#xff0c;PCB工程的朋友收藏&#xff0c;这篇文章关注我&#xff0c;私我吧&#xff01;&#xff01;&#xff01; 基于STM32的智能手环设计与实现 摘要一、研究背景及意义二、实现功能三、系统方案设计系统方案设计框图3.1 单片机芯片选择3…

getCookie(key)网页JS获取COOKE一项值

这里讲解一下获取document.cookie里面的指定项目值的两种方法&#xff1a; 第一种&#xff1a; let allcookies document.cookie; function getCookie(cookie_name) {var allcookies document.cookie;var cookie_pos allcookies.indexOf(cookie_name); //索引的长度// 如…

[HGAME 2023 week1]easyenc

查壳 IDA打开 字符串打开就发现了明显的标志 int __cdecl main(int argc, const char **argv, const char **envp) {__int64 v3; // rbx__int64 v4; // raxchar v5; // alchar *v6; // rcxint v8[10]; // [rsp20h] [rbp-19h]char v9; // [rsp48h] [rbpFh]__int128 v10[3]; //…

C 练习实例49-宏#define命令练习3

#ifdef if define 如果define定义了神马&#xff0c;便执行该语句。如果没定义这个&#xff0c;则执行#else语句。注意结尾要加#endif语句 代码&#xff1a; #include <stdio.h> #define Max #define MAXIMUM(x,y) (x,y)?x:y #define MINIMUM(x,y) (x,y)?y:x …

【Java】SpringMVC参数接收(一)

1、接收单个参数 &#xff08;1&#xff09;直接接收参数 RequestMapping("/hello") RestController public class HelloSpring {RequestMapping("/t2")public String t2(String name){return "name" name;} } 当没有传入参数时&#xff0c;返…

《汇编语言:基于linux环境》eatsyscall汇编程序

当阅读此书&#xff0c;作者编写了一个这样的程序&#xff0c;我也想试一下。照着书中的代码写了下&#xff0c;可以使用nasm正常编译&#xff0c;ld也可以正常链接&#xff0c;但是无法正常执行。总是报错。 ; nasm -f elf64 -g -F stabs eatsyscall.asm ; ld -o eatsysca…

sqli-labs靶场第七关

7、第七关 id1 --单引号报错,id1" --双引号不报错,可以判断是单引号闭合 id1) --也报错&#xff0c;尝试两个括号闭合&#xff0c;id1)) --不报错 接下来用脚本爆库 import stringimport requestsnumbers [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] letters2 list(string.ascii_…

【销售数据分析】客户画像分析之总体画像

前一段时间把财务分析的一些报表及分析场景讲得差不多了&#xff0c;接下来想和大家讲一下销售分析中的一些场景。今年看了许多企业的数据&#xff0c;发现大家2023年比疫情三年更难&#xff01;从财务的几张报表就会发现净利润亏损的居多&#xff0c;而亏损的主要原因基本上都…

【多线程笔记04】多线程之停止线程、取消线程任务的几种方式

这篇文章,主要介绍多线程之停止线程、取消线程任务的几种方式【知识星球】。 目录 一、问题描述 1.1、需求描述 1.2、技术方案

gitlab-runner注册到gitlab时报错:ERROR: Registering runner... failed xxxxxxxx

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 文章目录 场景报错分析解决场景 docker部署gitlab-runner后注册到gitlab 在进入gitlab-runner容…

Easysearch:语义搜索、知识图和向量数据库概述

什么是语义搜索&#xff1f; 语义搜索是一种使用自然语言处理算法来理解单词和短语的含义和上下文以提供更准确的搜索结果的搜索技术。旨在更好地理解用户的意图和查询内容&#xff0c;而不仅仅是根据关键词匹配&#xff0c;还通过分析查询的语义和上下文来提供更准确和相关的…

什么是DevOps?DevOps是如何提效的?

文章目录 前言一、DevOps是什么&#xff1f;二、DevOps是如何提效的&#xff1f;总结 前言 随着软件行业的不断发展&#xff0c;如何打破开发、运维、测试之间的边界&#xff0c;使工作更加高效成为了企业的新一个难题&#xff0c;本文将向大家介绍DevOps文化&#xff0c;以及…

巨杉数据库携手广发证券入选2023大数据“星河”案例

近期&#xff0c;中国信息通信研究院、中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)连续七年共同组织的大数据“星河&#xff08;Galaxy&#xff09;”案例征集活动发布公示。本次征集活动&#xff0c;旨在通过总结和推广大数据产业发展的优秀成果&#xff0c;推动…

C++多线程1(复习向笔记)

创建线程以及相关函数 当用thread类创建线程对象绑定函数后&#xff0c;该线程在主线程执行时就已经自动开始执行了,join起到阻塞主线程的作用 #include <iostream> #include <thread> #include <string> using namespace std; //测试函数 void printStrin…

前后端交互

1-前后端交互概述 1.1接口调用方式 原生ajax 基于jQuery的ajax fetch&#xff08;ajax的升级版&#xff09; axios &#xff08;第三方的库&#xff09; 1.2 url 地址格式有哪些 传统的url http://host:port/path?query#fragment http协议----https&#xff0c;ftp ho…

被鹅厂最新开源AI绘画工具PhotoMaker圈粉了,多风格头像生成器就靠它了!

要说本周AIGC开源爆火项目&#xff0c;腾讯的PhotoMaker 可以入选其一。而 PhotoMaker 是腾讯Arc于4天前开源上线到GitHub的&#xff0c;更有一众互联网科技领域大V体验推荐&#xff0c;当前Star已经有4.7k了&#xff01; 相信小编这篇文章发布时star预测可能达到5k了。而 Pho…