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

从能算到秒杀:单词拆分与「能否拼出来」的判定艺术

如果说完全平方数​ 是在算「最少几个数」,

零钱兑换​ 是在算「最少几枚硬币」,

139. 单词拆分​ 就是在考你:

一个字符串,到底能不能被“拼”出来?

这也是我第一次意识到:

很多 DP 题,其实是在做布尔判断,而不是计数。


🟢 题目速览

LeetCode 139. 单词拆分(中等)

给你一个字符串s和一个字符串列表wordDict

请你判断:s是否可以被拆分成若干个字典中出现的单词

  • ✅ 字典中的单词可以重复使用

  • ✅ 不需要用完所有单词

  • ❌ 单词拆分必须恰好覆盖整个字符串

示例

输入:s = "leetcode", wordDict = ["leet","code"] 输出:true 解释:leet + code = leetcode
输入:s = "applepenapple", wordDict = ["apple","pen"] 输出:true
输入:s = "catsandog", wordDict = ["cats","dog","sand","and","cat"] 输出:false

🧠 我的第一反应(很真实)

看到题的第一眼:

  • 回溯?

  • DFS?

  • 暴力枚举?

直觉告诉我:

只要前面拆对了,后面就能接着拆

于是脑子里立刻出现一句话:

这是 DP。


🚀 解法一:DP(面试唯一正解)

状态定义

dp[i] = s 的前 i 个字符是否可以被成功拆分

状态转移

dp[i] = true 当且仅当存在 j < i, 使得 dp[j] == true 且 s[j:i] 在字典中

代码(面试必写 ✅)

class Solution { public boolean wordBreak(String s, List<String> wordDict) { Set<String> set = new HashSet<>(wordDict); boolean[] dp = new boolean[s.length() + 1]; dp[0] = true; for (int i = 1; i <= s.length(); i++) { for (int j = 0; j < i; j++) { if (dp[j] && set.contains(s.substring(j, i))) { dp[i] = true; break; } } } return dp[s.length()]; } }

复杂度

指标

结果

时间复杂度

O(n²)

空间复杂度

O(n)

✅ 稳定

✅ 好写

✅ 面试安全


🚀 解法二:BFS(理解最短路径思想)

可以把字符串想象成一张图:

  • 节点:字符串下标

  • 边:从一个位置跳到一个能匹配单词的位置

  • 目标:从0 → n

👉 本质还是可达性问题

(面试中一般不写,但可以用来解释思路)


🎯 我学到的东西

这题最大的收获是:

类型

核心

完全平方数

最少数量

零钱兑换

最小代价

单词拆分

可行性判断

不是所有 DP 都要算最小值,有时候只关心 true / false。


⚠️ 易错点总结

误区

正确做法

上来就 DFS

用 DP 去重

忘记 dp[0]

dp[0] = true

不用 HashSet

会 TLE

拆分子串乱拆

固定前后边界


🧩 一句话总结

单词拆分 = 字符串上的完全背包 = 布尔型 DP


🎤 面试收尾(建议直接背)

“这道题本质是动态规划。

我用dp[i]表示前 i 个字符是否可以拆分,

然后枚举所有可能的切分点,只要前面能拆,后面也在字典里,就成立。

时间复杂度是 O(n²),空间复杂度是 O(n)。

实际工程中也可以用 Trie 或 BFS 优化。”

http://www.jsqmd.com/news/867701/

相关文章:

  • AI驱动的业务PPT智能生成:DeepSeek × Skills × MCP × 知识库
  • 锦江区黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐 - 莘州文化
  • 若尔盖县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • HTML 标签简写及全称
  • 终结拟合式智能:记忆博弈心智架构重塑硅基生命进化逻辑
  • 基于Spring Security与JWT的权限认证技术研究
  • 汉源县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • 色达县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • 如何让微信聊天记录成为你的数字记忆银行?WeChatMsg完全指南
  • 阆中市黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • 邻水县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • 没有数据、没有团队?这次NHANES·CHARLS双库训练营,带你2-3个月走出困境
  • 《技术底稿 40》别只看文件大小:一次 “反常 OOM” 背后的内存缓存重构
  • 洪雅县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • 测试工程师必知的数据库知识:这4个数据库技能,测试必备
  • 西昌市黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • Blender 3MF插件:实现CAD到3D打印的无缝转换完整指南
  • MyBatis-Plus持久层框架应用技术研究
  • 中性点不接地系统或中性点经消弧线圈接地系统的小电流接地故障仿真研究(Simulink仿真实现)
  • 10M参数也能跑ARC与数独,Bengio团队押注「多轨迹推理」
  • 软件测试的安全漏洞挖掘:掌握这3个方法,成为安全测试专家
  • 江安县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • 西充县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • B/S架构模式在校园管理系统中的应用研究
  • 会理市黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • 【顶级EI复现】基于去噪概率扩散模型(DDPM)的电动汽车充电行为场景生成研究( Python + PyTorch实现)
  • 西区黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐 - 莘州文化
  • 江油市黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • 为什么你的Windows快捷键突然失效?Hotkey Detective一键定位占用程序终极指南
  • 测试工程师如何进行测试计划制定?这5个步骤让你的计划更合理