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

【Hot 100】139. 单词拆分

目录

  • 引言
  • 单词拆分
    • 我的解题

请添加图片描述

  • 🙋‍♂️ 作者:海码007
  • 📜 专栏:算法专栏
  • 💥 标题:【Hot 100】139. 单词拆分
  • ❣️ 寄语:书到用时方恨少,事非经过不知难!

引言

继续dp算法刷题。

单词拆分

  • 🎈 题目链接:
  • 🎈 做题状态:

我的解题

解题思路:因为当前字符串能否拆分可以由前面子串能够拆分的状态推导过来,所以采用dp的方法来求解。
dp[i] 表示前 i 个元素组成的子串能否拆分
dp[0] 表示空字符串,等于 true ,能被拆分
dp[i] 的计算需要遍历字典中每个字符串进行匹配。匹配的时候也需要将 s 的子串进行拆分,因为字典中的字符串可以只匹配后半段,前半段的状态沿用 dp[i-len] 即可。只有当 s.substr(i - len, len) 和 wordDict[j] 相等并且 dp[i - len] 也为 true 时,当前的子串才能进行拆分。

class Solution {
public:bool wordBreak(string s, vector<string>& wordDict) {// dp数组初始化,dp[i]表示s的前i个字符能否被拆分vector<bool> dp(s.size() + 1, false);  // 注意这里应该是bool类型dp[0] = true;   // 空字符串可以被拆分// 遍历字符串的每个位置for (int i = 1; i <= s.size(); ++i)  // 修改为<=,因为dp.size()=s.size()+1{// 遍历字典中的每个单词for (const string& word : wordDict)  // 使用引用避免拷贝{int len = word.size();// 如果当前子串长度小于单词长度,跳过if (i < len) continue;// 检查:// 1. 当前子串的后len个字符是否匹配字典单词// 2. 前面的子串(i-len长度)是否可被拆分if (s.substr(i - len, len) == word && dp[i - len]){dp[i] = true;break;  // 找到一个匹配即可跳出循环}}}return dp[s.size()];  // 返回整个字符串的拆分结果}
};

相关文章:

  • arduino Nano+asrpro2.0制作桌面宠物
  • (javaEE)网络原理-初识 局域网和广域网 ip地址和端口号 协议 五元组 协议分层 OSI七层模型 网络数据通信的基本流程
  • 全球人工智能技术大会(GAITC 2025):技术前沿与产业融合的深度交响
  • Go内存池设计与实现:减少GC压力
  • **解锁 C++ std::map 的力量**
  • 26考研——数据的表示和运算_整数和实数的表示(2)
  • 2025-06-01-Hive 技术及应用介绍
  • 【hive】函数集锦:窗口函数、列转行、日期函数
  • QT的工程文件.pro文件
  • 使用 IntelliJ IDEA 安装通义灵码(TONGYI Lingma)插件,进行后端 Java Spring Boot 项目的用户用例生成及常见问题处理
  • 25.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--用户服务接口
  • SQL手工测试(MySQL数据库)
  • 树莓派超全系列教程文档--(58)通过网络启动树莓派
  • 【LeetCode 热题100】网格路径类 DP 系列题:不同路径 最小路径和(力扣62 / 64 )(Go语言版)
  • 第6章:Neo4j数据导入与导出
  • 自定义连接线程池
  • 408第一季 - 数据结构 - 图
  • mybatis执行insert如何返回id
  • 星耀8上市品鉴暨北京中和吉晟吉利银河用户中心开业媒体见面会
  • 基于多维视角的大模型提升认知医疗过程层次激励编程分析
  • 中小企业网站建设示范平台/南宁网站运营优化平台
  • 西安公司企业网站建设/百度下载免费
  • 上海在线做网站/营销网络是啥意思
  • 描写做网站专业的句子/泰安seo网络公司
  • 网站开发出来为什么加载特别慢/公司网页制作模板
  • 做网站 后端是谁来做的/网站推广的渠道有哪些