leetcode_字典树139.单词拆分
- 创业
- 2025-09-20 22:06:02

139. 单词拆分
给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。
注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。
思路:
定义状态:设dp[i]表示字符串s的前 i 个字符(即 s[0:i])
需计算 dp[len(s)],即整个字符串 s 是否可以被拼接
状态转移方程:对于每个位置i,需要检查所有可能的分割点 j(0 <= j < i),检查 s[j:i] 是否在字典中,并且 dp[j] 是否为 true
如果存在这样的j,则 dp[i] = true
class Solution(object): def wordBreak(self, s, wordDict): """ :type s: str :type wordDict: List[str] :rtype: bool """ # 将字典转换为集合,方便快速查找 wordSet = set(wordDict) n = len(s) dp = [False] * (n + 1) # 创建n+1个值全为False的数组dp dp[0] = True # 空字符串可以被拼接 for i in range(1, n + 1): # 遍历所有可能的结束位置 for j in range(i): # 遍历所有可能的分割点 if dp[j] and s[j:i] in wordSet: # 如果s[j:i]在字典中,且dp[j] 为true dp[i] = True break # 找到一个有效的分割点即可 return dp[n] 时间复杂度: O(n^2)空间复杂度: O(n)leetcode_字典树139.单词拆分由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“leetcode_字典树139.单词拆分”
下一篇
性能测试分析和调优