*【139/M/Python】Word Break

题目

这里写图片描述

思路

动态规划
动态规划问题是面试题中的热门话题

如果要求一个问题的最优解(通常是最大值或者最小值),而且该问题能够分解成若干个子问题,并且小问题之间也存在重叠的子问题,则考虑采用动态规划。

使用动态规划特征:
1. 求一个问题的最优解
2. 大问题可以分解为子问题,子问题还有重叠的更小的子问题
3. 整体问题最优解取决于子问题的最优解(状态转移方程)
4. 从上往下分析问题,从下往上解决问题
5. 讨论底层的边界问题

代码

class Solution:
    def wordBreak(self, s, wordDict):
        """
        :type s: str
        :type wordDict: List[str]
        :rtype: bool
        """
        n,dp = len(s),[True] + [False]*len(s)

        for i in range(n):
            for j in range(i+1):
                if dp[j] and s[j:i+1] in wordDict:
                    dp[i+1] = True
                    break
        return dp[n]

猜你喜欢

转载自blog.csdn.net/alicelmx/article/details/81476611
今日推荐