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

浙公网安备 33010602011771号