LeetCode 139. 单词拆分(Medium)/ 140. 单词拆分 II(Hard)

LeetCode 139. 单词拆分(Medium)/ 140. 单词拆分 II(Hard)_第1张图片
题目链接

题解

  1. 动态规划+记忆化回溯 逐行解释 python3

思路

LeetCode 139. 单词拆分(Medium)/ 140. 单词拆分 II(Hard)_第2张图片
LeetCode 139. 单词拆分(Medium)/ 140. 单词拆分 II(Hard)_第3张图片

代码

class Solution:
    ### 0201 动态规划(84 ms,14.9 MB)
    def wordBreak(self, s: str, wordDict: List[str]) -> bool:
        n = len(s)

        # dp[i]表示s的前i个字符能否由wordDict中单词表示
        dp = [False] * (n + 1)
        dp[0] = True

        # 以每个字符作为开头进行遍历
        for i in range(n):
            # 判断后续字符能否被表示
            for j in range(i+1, n+1):
                # 若之前i个字符能被表示 且 当前字符也能够被表示
                if dp[i] and s[i:j] in wordDict:
                    dp[j] = True

        return dp[-1]

140. 单词拆分 II

LeetCode 139. 单词拆分(Medium)/ 140. 单词拆分 II(Hard)_第4张图片

  • 题解
    LeetCode 139. 单词拆分(Medium)/ 140. 单词拆分 II(Hard)_第5张图片

你可能感兴趣的:(LeetCode,leetcode,算法,职场和发展)