【LeetCode】139. 单词拆分

news/2025/3/3 23:41:58/

目录

  • 题目描述
  • 输入输出示例及数据范围
  • 思路
  • C++ 实现

题目描述

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

注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用

输入输出示例及数据范围

在这里插入图片描述

思路

这道题的思路其实和 LeetCode 322. 兑换零钱 是差不多的。先来说这道题目,我们的目标是判断能否根据给定的字符串数组当中的字符串拼接出目标字符串,且字典中的串可以重复使用,实际上要做的就是判断目标串当中每一个下标位置对应的子串能否和字典中的某个串匹配。如果s[i + 1... j]与字典中的某个串wordDict[k]匹配,并且s[0... i]已经明确可以由wordDict当中的串拼接组成,那么s[0... j]当然也就可以通过wordDict当中的串拼接而成。

至此,思路已经非常清晰了,我们需要一个 bool 类型的 dp 数组,用来存储目标串每个位置对应的从头开始到i的子串s[0... i]是否可以由字典wordDict当中的串拼接而成,当然有dp[0] = true

之后,枚举s的每一个下标i,并在枚举i的循环中嵌套一个枚举wordDict的循环,令len = wordDict[k].size(),如果i >= len,可以进一步判断dp[i - len]是否为 true,如果为 true 说明 i - len 之前的串可以通过字典中的串拼接而成,再判断当前s[i - len... i]这部分的串能否和字典中的串,如果可以,那么dp[i] = true,代表s[0... i]可以由字典中的串拼接组成。

最后返回dp[n]得到答案。

C++ 实现

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

http://www.ppmy.cn/news/1576404.html

相关文章

短连接服务器压测-wrk

背景 由于业务需要我们从原来的 长连接 转为 短连接&#xff0c;提高单服同时在线人数。 老压测 在服务器编写机器人&#xff0c;编写一部分客户端逻辑&#xff08;这里如果客户端严格使用mvc 模式&#xff0c;其实可以把 view 层换为 服务器测试代码层&#xff0c;而一般不…

三元组排序(acwing)c++

给定 NN 个三元组 (x,y,z)(x,y,z)&#xff0c;其中 xx 是整数&#xff0c;yy 是浮点数&#xff0c;zz 是字符串。 请你按照 xx 从小到大的顺序将这些三元组打印出来。 数据保证不同三元组的 xx 值互不相同。 输入格式 第一行包含整数 NN。 接下来 NN 行&#xff0c;每行包…

委托者模式(掌握设计模式的核心之一)

目录 问题&#xff1a; 举例&#xff1a; 总结&#xff1a;核心就是利用Java中的多态来完成注入。 问题&#xff1a; 今天刷面经&#xff0c;刷到装饰者模式&#xff0c;又进阶的发现委托者模式&#xff0c;发现还是不理解&#xff0c;特此记录。 举例&#xff1a; ​老板​…

自学微信小程序的第六天

DAY6 1、使用录音API首先需要通过wx.getRecorderManager()方法获取到一个RecorderManager实例,该实例是一个全局唯一的录音管理器,用于实现录音功能。 表32:RecorderManager实例的常用方法 方法名称 说明 start() 开始录音 pause() 暂停录音 resume() 继续录音 stop() 停止…

基于STM32的天气查询系统设计

摘 要 现代社会进入高速发展的时代&#xff0c;人们的生活节奏越加紧凑&#xff0c;但人们依旧向往未来美好的生活环境&#xff0c;智能家具市场应运而生。天气状况是人们对美好生活的最直观感受&#xff0c;很大程度的影响着人们对更好生活质量的追求。智能家居可以为人们提供…

004 rocketmq集群

1、集群模式 在RocketMQ中&#xff0c;集群的部署模式是比较多的&#xff0c;有以下几种&#xff1a; public class ConsumerDemo {public static void main(String[] args) throws Exception {DefaultMQPushConsumer consumer new DefaultMQPushConsumer("test-group&qu…

算法1-2 分数线划定

题目描述 世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才&#xff0c;A 市对所有报名的选手进行了笔试&#xff0c;笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的 150% 划定&#xff0c;即如果计划录取 m 名志愿者&#xf…

优博讯,蓝禾,三七互娱,顺丰,oppo,游卡,汤臣倍健,康冠科技,作业帮,高途教育25届春招内推

优博讯&#xff0c;蓝禾&#xff0c;三七互娱&#xff0c;顺丰&#xff0c;oppo&#xff0c;游卡&#xff0c;汤臣倍健&#xff0c;康冠科技&#xff0c;作业帮&#xff0c;高途教育25届春招内推 ①优博讯 【岗位】Android系统开发工程师&#xff0c;GMS认证开发工程师&#xf…