LC 速查

HOT 100索引 › B15 动态规划 Dynamic Programming

LC 139单词拆分Word Break 中等

判断字符串 s 能否由词典中的单词拼接而成,单词可重复使用。

思路 dp[i] 表示前 i 个字符可拆分,枚举最后一个单词起点 j:dp[j] 且 s[j:i] 在词典中则 dp[i] 为真。时间 O(n²)。

class Solution:
    def wordBreak(self, s: str,
                  wordDict: List[str]) -> bool:
        words = set(wordDict)
        n = len(s)
        dp = [True] + [False] * n
        for i in range(1, n + 1):
            for j in range(i):
                if dp[j] and s[j:i] in words:
                    dp[i] = True
                    break
        return dp[n]
← 上一题 零钱兑换最长递增子序列 下一题 →