【面试经典 | 150】单词拆分

文章目录

  • Tag
  • 题目来源
  • 解题思路
    • 方法一:动态规划
  • 写在最后

Tag

【动态规划】【字符串】


题目来源

139. 单词拆分


解题思路

方法一:动态规划

定义状态

定义 dp[i] 表示字符串 si 个字符组成的字符串(s[0, ..., i-1])是否能被空格拆分成若干个在字典中出现的单词。

转移关系

dp[i]dp[j] 以及字符串 s[j, i-1] 有关,即有

KaTeX parse error: Expected 'EOF', got '&' at position 16: dp[i] = dp[j] &̲ check(s.substr…

其中 check() 表示判断参数是否在 wordDict 字符串列表中。

base case

dp[0] = true,表示初始状态即空字符串也在 wordDict 字符串列表中。

最后返回

最后返回 dp[s.size()],即使用 wordDict 字符串列表中的一个或多个单词是否可以拼接出字符串 s

实现代码

class Solution {
public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set<string> st;for (const auto& word : wordDict) {st.insert(word);}int n = s.size();vector<bool> dp(n+1);dp[0] = true;for (int i = 1; i < n+1; ++i) {for (int j = 0; j < i; ++j) {if (dp[j] && st.find(s.substr(j, i-j)) != st.end()) {dp[i] = true;break;}}}return dp[n];}
};

复杂度分析

时间复杂度: O ( n ) O(n) O(n) n n n 为字符串 s 的长度。我们一共有 O ( n ) O(n) O(n) 个状态需要计算,每次计算需要枚举 O ( n ) O(n) O(n) 个分割点,哈希表判断一个字符串是否出现在给定的字符串列表需要 O ( 1 ) O(1) O(1) 的时间,因此总时间复杂度为 O ( n 2 ) O(n^2) O(n2)

空间复杂度: O ( n ) O(n) O(n)


写在最后

如果您发现文章有任何错误或者对文章有任何疑问,欢迎私信博主或者在评论区指出 💬💬💬。

如果大家有更优的时间、空间复杂度的方法,欢迎评论区交流。

最后,感谢您的阅读,如果有所收获的话可以给我点一个 👍 哦。

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

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

相关文章

【Node.js】模块化

概述 Nodejs 模块化规范遵循两套规范&#xff1a; Common JSES Module Common JS 引入模块&#xff08;require&#xff09;支持四种格式 支持引入内置模块例如 http os fs child_process 等const fs require(fs)&#xff0c;高版本也可以使用const fs require(node:fs…

【Java SE】封装

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 文章目录 1. 封装1.1 封装是什么1.2 封装的意义1.3 访问修饰限定符1.3.1 在Java中如何实现封装1.3.2 各种访问修饰限定…

C语言基础:数据类型

数据类型 C 语言的每一种数据&#xff0c;都是有类型&#xff08;type&#xff09;的&#xff0c;编译器必须知道数据的类型&#xff0c;才能操作数据。一旦知道某个值的数据类型&#xff0c;就能知道该值的特征和操作方式。 基本数据类型有三种&#xff1a;字符&#xff08;c…

C语言学习笔记day16

1. 可变参函数 在 C 语言中&#xff0c;可变参数函数是指能够接受不定数量参数的函数。常见的可变参数函数格式是使用 <stdarg.h> 头文件中的宏和函数来实现&#xff0c;其中最常用的是 va_list、va_start、va_arg 和 va_end 函数调用时,传入参数个数是不确定的,需要将函…

SpringCloud微服务集成Dubbo

1、Dubbo介绍 Apache Dubbo 是一款易用、高性能的 WEB 和 RPC 框架,同时为构建企业级微服务提供服务发现、流量治理、可观测、认证鉴权等能力、工具与最佳实践。用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服…

【二叉树】Leetcode 230. 二叉搜索树中第K小的元素【中等】

二叉搜索树中第K小的元素 给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 个最小元素&#xff08;从 1 开始计数&#xff09;。 示例1&#xff1a; 输入&#xff1a;root [3,1,4,null,2], k 1 输出&#xff1a;1 解…

在 fstab文件中配置 UUID方式自动挂载数据盘、swap、目录(**)

linux如何挂在硬盘&#xff0c;自动挂载和手动挂载&#xff08;详细说明&#xff09;https://gitcode.csdn.net/65eedcea1a836825ed7a06f4.html 解决linux重启后磁盘挂载失效的问题 https://blog.csdn.net/sugarbliss/article/details/107033034 linux /etc/fstab 文件详细说…

UG NX二次开发(C#)-通过曲线组生成NURBS曲面

文章目录 1、前言2、UG NX中通过曲线组生成NURBS曲面的操作3、采用NXOpen C#方法的源代码1、前言 在UG NX中,曲线、曲面的操作使用比较多,对于创建NURBS曲面,可以通过曲线组来生成,本文以NXOpen C#的方法实现通过曲线组生成NURBS曲面的功能。对于UG NX二次开发感兴趣或者有…

探索多种数据格式:JSON、YAML、XML、CSV等数据格式详解与比较

title: 探索多种数据格式&#xff1a;JSON、YAML、XML、CSV等数据格式详解与比较 date: 2024/3/28 17:34:03 updated: 2024/3/28 17:34:03 tags: 数据格式JSONYAMLXMLCSV数据交换格式比较 1. 数据格式介绍 数据格式是用于组织和存储数据的规范化结构&#xff0c;不同的数据格…

【aws】架构图工具推荐

碎碎念 以前以为日本冰箱论是个梗&#xff0c;结果居然是真的。用光盘传真其实还能理解&#xff08;毕竟我也喜欢电子古董2333&#xff09;&#xff0c;但是画架构图居然用的是excel&#xff0b;截图&#xff01;啊苍天呐&#xff0c;然后看到隔壁工位用excel画web原型又感觉释…

将数字城市复制到虚拟空间,如何搭建实景三维虚拟场景?

什么是实景三维&#xff1f; 实景三维&#xff08;3D Real Scene&#xff09;是一个专业术语&#xff0c;它指的是对一定范围内人类生产、生活和生态空间进行真实、立体、时序化反映和表达的数字虚拟空间。它是新型基础测绘的标准化产品&#xff0c;也是国家重要的新型基础设施…

android apk混淆

android apk混淆是什么? Android APK 混淆是指对 Android 应用程序的代码进行混淆处理&#xff0c;以增强代码的安全性和减小应用程序体积。在 Android 开发中&#xff0c;通常使用 ProGuard 或 R8 这样的工具来执行混淆操作。 混淆过程通过重命名类、方法和变量名称&#x…

权限提升-系统权限提升篇数据库提权PostsqlRedis第三方软件提权密码凭据钓鱼文件

知识点 1、数据库到Linux-数据库提权-Redis 3、数据库到Linux-数据库提权-PostgreSQL 4、计算机用户到系统-第三方软件-各类应用 章节点&#xff1a; 1、Web权限提升及转移 2、系统权限提升及转移 3、宿主权限提升及转移 4、域控权限提升及转移 Windows提权&#xff1a; 1、…

RC522 读卡

Rc522对时序的要求很高&#xff0c;不能太快了&#xff0c;太快了它反应不过来&#xff0c;还有对硬件要求&#xff0c;线圈的长度等都会导致不灵敏&#xff0c;这个要调电容。下面这大哥说的很清楚。 RC522的天线设计和参考示例_rc522天线计算-CSDN博客 RC522.c #include &q…

Linux 基于HAProxy+KeepAlived实现

Linux 基于HAProxyKeepAlived实现 1. 介绍1.1 高可用&#xff08;HA-High Avaialbility&#xff09;1.2 负载均衡&#xff08;LB-Load Balance&#xff09;1.3 HAProxy1.4 KeepAlived 2. 后端服务为Nginx2.1 系统拓扑2.2 环境说明2.3 前提条件2.4 详细步骤2.4.1 机器初始化2.4.…

Python列表、元组、字典及集合

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、列表定义方式&#xff1a; 二、元组1、定义方式&#xff1a;2、元组中的物理存储地址不可修改,如果修改则会报错&#xff0c;但是元组中的列表、字典项等却可以…

双非二本找实习前的准备day11

学习目标&#xff1a; 每天2-3到简单sql&#xff08;刷完即止&#xff09;&#xff0c;每天复习代码随想录上的题目2-3道算法&#xff08;时间充足可以继续&#xff09;&#xff0c;背诵的八股的问题也在这里记录了 今日碎碎念&#xff1a; 1&#xff09;科四没时间考了&…

Retelling|Father Christmas

Father Christmas Retelling|Father Christmas Im going Im going to talk about Christmas and the question of whether he exists or not, all children would answer to this question. They all believe in Father Christmas. But 英 /ˈdʌlt&#xff0c;əˈdʌlt/a do…

高效八股文背诵方法

往往到了找工作高峰期&#xff0c;经常会出现八股文很多 难以背诵 的苦恼&#xff0c;下面在下结合情况&#xff0c;列举了几点自认为可以的背诵方法&#xff1a; 1. **大声朗读**&#xff1a; - 对于Java核心概念和重要理论&#xff0c;先大声朗读&#xff0c;这不仅可以帮…

React-1-jsx基础-事件绑定-样式处理

一.JSX基础-概念和本质 1.1 什么是JSX JSX是JavaScript和XML&#xff08;HTML&#xff09;的缩写&#xff0c;表示在JS代码中编写HTML模版结构,它是React中编写UI模版的方式 优势&#xff1a; 1. HTML的声明式模版写法 2. JS的可编程能力 JSX的本质&#xff1a; JSX并不是标…