码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode Word Break

时间:2016-05-06 15:46:03      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

LeetCode解题之Word Break


原题

给定一个目标字符串和一组字符串,判断目标字符串能否拆分成数个字符串,这些字符串都在给定的那组字符串中。

注意点:

例子:

输入: s = “leetcode”, wordDict = {“leet”, “code”}

输出: True

解题思路

采用动态规划的方法解决,dp[i]表示字符串s[:i]能否拆分成符合要求的子字符串。我们可以看出,如果s[j:i]在给定的字符串组中,且dp[j]为True(即字符串s[:j]能够拆分成符合要求的子字符串),那么此时dp[i]也就为True了。按照这种递推关系,我们就可以判断目标字符串能否成功拆分。

AC源码

class Solution(object):
    def wordBreak(self, s, wordDict):
        """
        :type s: str
        :type wordDict: Set[str]
        :rtype: bool
        """
        n = len(s)
        dp = [False] * (n + 1)
        dp[0] = True
        for i in range(n):
            for j in range(i, -1, -1):
                if dp[j] and s[j:i + 1] in wordDict:
                    dp[i + 1] = True
                    break
        return dp[n]


if __name__ == "__main__":
    assert Solution().wordBreak("leetcode", {"leet", "code"}) == True

欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。

LeetCode Word Break

标签:

原文地址:http://blog.csdn.net/u013291394/article/details/51318411

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!