LeetCode热题100-单词拆分

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

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

核心思路(动态规划)

  • 定义 dp[i]:前 i 个字符能否被拆分
  • 初始化:dp[0] = True(空串合法)
  • 转移:对每个位置 i,往前找一个 j,如果 dp[j] 合法,并且 s[j:i] 在字典里→ dp[i] = True

至于为什么长度是n + 1而不是n,原因:

dp i 表示:字符串前 i 个字符能否拆分

  • 字符串下标是 0 ~ n-1
  • 前 0 个字符:空串
  • 前 1 个字符:s 0
  • 前 2 个字符:s 0 s 1
  • ...
  • 前 n 个字符:整个字符串 s 0..n-1

所以要想表示整个字符串 ,dp 必须开到 dpn

python 复制代码
class Solution:
    def wordBreak(self, s: str, wordDict: List[str]) -> bool:

        word_set = set(wordDict)
        n = len(s)
        dp = [False] * (n + 1)
        dp[0] = True

        for i in range(1, n + 1):
            for j in range(i):
                if dp[j] and s[j:i] in word_set:
                    dp[i] = True

        return dp[n]
        
相关推荐
一条闲鱼_mytube15 分钟前
分布式 ID 生成方案:雪花算法与号段模式
分布式·算法·wpf
Msir_Modern21 分钟前
Noita 元胞沙盒笔记
算法·unity·c#·游戏引擎·元胞自动机
木井巳1 小时前
【动态规划: 路径问题】不同路径
java·算法·leetcode·动态规划
yuanxi2001 小时前
大众汽车集团或暂停印度电动汽车投资:PSS⁵谈判力视角
职场和发展·创业创新·学习方法
CQU_JIAKE2 小时前
10.25【A】
数据结构·算法
greencherry_2 小时前
大连模屿石膏课模具配比全固定,调色浇注之外还缺什么?
算法·生活
晒太羊的猫2 小时前
hot100子串
java·算法·leetcode
天真小巫3 小时前
2026.10.25总结
职场和发展
小豆庄3 小时前
视频脱敏引擎的追踪难题:转场误判定、ID撞号和淡入窗口
qt·算法·目标检测·音视频·视频·敏捷流程
_张一凡3 小时前
【AIGC面试面经第15期】AI 视频核心基础知识相关问答
面试·职场和发展·aigc