LeetCode 139. 单词拆分(Word Break) - 动态规划深度解析 - 详解

本文详细解析LeetCode 139题"单词拆分"的动态规划解法,涵盖核心思路、代码实现、区间理解和性能优化

问题描述

给定一个字符串 s 和一个字符串字典 wordDict,判断 s 是否能被拆分为一个或多个字典中单词的空格分隔序列。注意:字典中的单词可以重复使用。

示例

输入: s = "leetcode"
, wordDict = ["leet"
, "code"]
输出: true
解释: "leetcode" 可拆分为 "leet code"

动态规划解法

解法核心思路

使用动态规划数组 valid,其中:

  • valid[i] 表示字符串 s 的前 i 个字符(s.substring(0, i))能否被拆分为字典中的单词
  • 目标是计算 valid[s.length()](整个字符串是否可拆分)

完整代码实现

class Solution {

public
boolean wordBreak(String s, List<
String> wordDict) {

// 将字典转换为HashSet以提高查找效率
HashSet<
String> set =
new HashSet<
>(wordDict)
;
// 创建动态规划数组,长度+1(包含空字符串情况)
boolean[] valid =
new
boolean[s.length
posted @ 2025-10-05 15:36  yxysuanfa  阅读(20)  评论(0)    收藏  举报