leetcode hot100【LeetCode 139. 单词拆分】java实现

LeetCode 139. 单词拆分

题目描述

给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。

说明:

  • 拆分时可以重复使用字典中的单词。
  • 你可以假设字典中没有重复的单词。

示例 1:

输入: s = "leetcode", wordDict = ["leet", "code"]
输出: true
解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。

示例 2:

输入: s = "applepenapple", wordDict = ["apple", "pen"]
输出: true
解释: 返回 true 因为 "applepenapple" 可以被拆分成 "apple pen apple"。注意你可以重复使用字典中的单词。

示例 3:

输入: s = "catsandog", wordDict = ["cats", "dog", "sand", "and", "cat"]
输出: false

Java 实现代码

class Solution {public boolean wordBreak(String s, List<String> wordDict) {// 将词典转换为集合,方便快速查找Set<String> wordSet = new HashSet<>(wordDict);// 初始化dp数组,dp[i]表示s[0:i]是否可以被拆分boolean[] dp = new boolean[s.length() + 1];dp[0] = true;  // 空字符串可以被拆分// 遍历字符串s的每个位置for (int i = 1; i <= s.length(); i++) {// 检查从前面的某个位置j到当前位置i的子串是否在wordDict中for (int j = 0; j < i; j++) {// 如果dp[j]为true,并且s[j:i]在wordDict中,则更新dp[i]if (dp[j] && wordSet.contains(s.substring(j, i))) {dp[i] = true;break;  // 找到满足条件的子串后,跳出循环}}}// 返回s[0:n]是否可以被拆分return dp[s.length()];}
}

解题思路

  1. 初始化:创建一个布尔数组 dp,长度为 s.length() + 1,其中 dp[i] 表示字符串 s 的前 i 个字符能否被拆分成字典中的单词。初始化 dp[0]true,因为空字符串可以被拆分。

  2. 状态转移:遍历字符串 s 的每个位置 i,对于每个位置 i,再遍历之前的每个位置 j,判断 dp[j] 是否为 true,并且 s.substring(j, i) 是否在 wordDict 中。

  3. 结果返回:最终返回 dp[s.length()],表示整个字符串 s 是否可以被拆分。

复杂度分析

  • 时间复杂度:O(n^2),其中 n 是字符串 s 的长度。最坏情况下,我们需要检查所有子串。
  • 空间复杂度:O(n),需要一个大小为 n + 1 的数组 dp 来存储中间结果。

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

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

相关文章

etcd-python

etcd 分布式键值(key-value)数据库 基于go语言实现 分布式系统中提供强一致性、高可用性的组件 etcd内部采用raft协议作为一致性算法 用来存储少量重要的数据 pip install etcd3 import etcd # 连接etcd&#xff08;可以加用户名密码&#xff09; etcd etcd3.client(host192…

前端学习-盒子模型(十八)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 盒子模型组成 边框 语法 边框简写 代码示例 表格的细线边框 语法 内边距 内边距复合写法 外边距 外边距典型应用 外边距合并 清除内外边距 总结 前…

LeetCode 第422场个人周赛

目录 Q1. 检查平衡字符串 原题链接 思路分析 AC代码 Q2. 到达最后一个房间的最少时间 I 原题链接 思路分析 AC代码 Q3. 到达最后一个房间的最少时间 II 原题链接 思路分析 AC代码 Q4. 统计平衡排列的数目 原题链接 思路分析 AC代码 Q1. 检查平衡字符串 原题链接…

力扣题解(大礼包)

638. 大礼包 已解答 中等 相关标签 相关企业 在 LeetCode 商店中&#xff0c; 有 n 件在售的物品。每件物品都有对应的价格。然而&#xff0c;也有一些大礼包&#xff0c;每个大礼包以优惠的价格捆绑销售一组物品。 给你一个整数数组 price 表示物品价格&#xff0c;其中…

GHuNeRF: Generalizable Human NeRF from a Monocular Video

研究背景 研究问题&#xff1a;这篇文章要解决的问题是学习一个从单目视频中泛化的人类NeRF模型。尽管现有的泛化人类NeRF已经取得了令人印象深刻的成果&#xff0c;但它们需要多视图图像或视频&#xff0c;这在某些情况下可能不可用。此外&#xff0c;一些基于单目视频的人类…

为啥学习数据结构和算法

基础知识就像是一座大楼的地基&#xff0c;它决定了我们的技术高度。而要想快速做出点事情&#xff0c;前提条件一定是基础能力过硬&#xff0c;“内功”要到位。 想要通关大厂面试&#xff0c;千万别让数据结构和算法拖了后腿 我们学任何知识都是为了“用”的&#xff0c;是为…

离线安装Vue2开发环境

在外网进行Vue2开发后&#xff0c;需要转到内网开发&#xff0c;无法在线依赖库安装&#xff0c;需要迁移node_modules。 1.内外网开发电脑安装同样版本的nodejs 我本地安装的node-v16.17.1-x64.msi&#xff0c;所以在内网环境也要按照node-v16.17.1-x64.msi。 在外网环境使用…

hadoop面试题

一、单项选择题 1、目前&#xff0c;Hadoop的最高版本是哪个&#xff08; A &#xff09; A、Hadoop3.x B、Hadoop2.x C、Hadoop4.x D、Hadoop1.x 2、大数据的4V特征是指? &#xff08; B &#xff09; A、数据量大(Volume)、类型繁多(Variety)、价值密度低(Va…

初探Flink的序列化

Flink中的序列化应用场景 程序通常使用(至少)两种不同的数据表示形式[2]&#xff1a; 1. 在内存中&#xff0c;数据保存在对象、结构体、列表、数组、哈希表和树等结构中。 2. 将数据写入文件或通过网络发送时&#xff0c;必须将其序列化为字节序列。 从内存中的表示到字节序列…

运维人员常用的Linux命令汇总

运维人员常用的Linux命令汇总 一.文件和目录 cd命令&#xff0c;用于切换当前目录&#xff0c;它的参数是要切换到的目录的路径&#xff0c;可以是绝对路径&#xff0c;也可以是相对路径。 cd /home 进入 / home 目录 cd .. 返回上一级目录 cd ../.. …

【ESP32】ESP-IDF开发 | I2C控制器+I2C主从收发例程

1. 简介 I2C&#xff08;Inter-Integrated Circuit&#xff09;&#xff0c;是由Philips公司在1980年代初开发的一种半双工的同步串行总线&#xff0c;它利用一根时钟线和一根数据线在连接总线的两个器件之间进行信息的传递&#xff0c;为设备之间数据交换提供了一种简单高效的…

软考:案例题分析1101

22年第一题&#xff1a;架构设计与评估 分析文字&#xff0c;识别需求和质量属性&#xff1f;这里需要记忆质量属性有那些&#xff0c;区分需求和质量属性&#xff0c;能区分出质量属性之间的区别。 我的回答&#xff1a; 差距分析&#xff1a; 根据题目中功能的特点&#xff…

提高交换网络可靠性之端口安全配置

转载请注明出处 此实验为配置交换机端口安全&#xff0c;当非法设备接入接口时自动触发安全措施 1.查看PC1和PC2的MAC地址&#x1f447; 2.交换机改名为S1&#xff0c;同时启用端口安全 3.配置允许接入设备 4.设置违规处理方式&#xff1a;即违规则关闭端口 5.查看安全端口相关…

nodejs入门教程19:nodejs dns模块

引入方式 在Node.js中&#xff0c;使用dns模块前需要先通过require函数引入它&#xff1a; const dns require(dns);核心方法 1. dns.lookup(hostname[, options], callback) 功能&#xff1a;将域名解析为IP地址。参数&#xff1a; hostname&#xff1a;要查询的主机名。…

UE5 第三人称学习之动画 control rig

这个东西和建模软件里有的是一个东西&#xff0c;然后IK就是你动脚&#xff0c;他帮你算出小腿大腿该怎么动&#xff0c;FK就是你自己动了大腿&#xff0c;摆小腿&#xff0c;然后再摆脚 就是给每一根骨骼搞一个控制器&#xff0c;给他一个容易选中和操作更明显的图形作为控制…

宏处理将多个excel文件的指定sheet页合并到一个excel文件中

背景了解&#xff1a;有个同事问我&#xff1a;现在他要处理一千多个文件&#xff0c;每个excel文件都有3个sheet页签&#xff0c;想把所有的excel文件的第二个sheet页签复制一份放到一个新的excel文件中。如果是手动去操作一个个文件的复制&#xff0c;也没什么不可&#xff0…

Linux系列-进程的概念

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 这篇文章&#xff0c;我们主要分析一下进程。 之前&#xff0c;我们讲过了冯诺依曼体系架构&#xff0c; 我们常见的计算机&#xff0c;像笔记本&#xff0c;或者不常见的计算机…

SQL优化经验大全(表设计优化,索引优化,索引创建规则、索引失效场景,sql语句优化,主从复制,分库分表)面试题

目录 1.表的设计优化 2.索引优化 2.1 索引创建的规则 2.2 索引失效的场景 3.SQL语句优化 4.主从复制、读写分离 5.分库分表 5.1.怎么判断项目是需要分库还是要分表&#xff1f; 5.2 分库分表有哪些拆分方案&#xff1f; 5.2.1 垂直分库 5.2.2 垂直分表 5.2.3 水平分…

【VMware】使用笔记

一、安装 win11支持16.2以上版本&#xff0c;其他版本不兼容 安装参考&#xff1a; 二、设置 1、蓝屏设置 参考&#xff1a;win11打开VMware虚拟机蓝屏解决_win11vmware蓝屏-CSDN博客 2、VMwareTool配置 第一步&#xff1a;移除“open-vm-tools” sudo apt-get autoremo…

css边框修饰

一、设置线条样式 通过 border-style 属性设置&#xff0c;可选择的一些属性如下&#xff1a; dotted&#xff1a;点线 dashed&#xff1a;虚线 solid&#xff1a;实线 double&#xff1a;双实线 效果如下&#xff1a; 二、设置边框线宽度 ① 通过 border-width 整体设置…