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

单词拆分II

时间:2019-01-24 13:31:03      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:nbsp   int   res   多少   调用   单词   返回   end   return   

#单词拆分II
#给一字串s和单词的字典dict,在字串中增加空格来构建一个句子,并且所有单词都来自字典。
#返回所有有可能的句子。
#EXAMPLE:
#给一字串lintcode,字典为["de", "ding", "co", "code", "lint"]
#结果为["lint code", "lint co de"]。

class Solution:
    """
    @param: s: A string
    @param: wordDict: A set of words.
    @return: All possible sentences.
    """
    def wordBreak(self, s, wordDict):
        # write your code here
        return self.helper(s, wordDict, {})

    def helper(self, s, wordDict, memory):
        if s in memory: #string如果有记录,直接调用返回以节省时间
            return memory[s]
        res = []
        for i in range(len(s)):
            cut = s[:i+1]
            if cut in wordDict:
                sub = self.helper(s[i+1:], wordDict, memory)
                for j in sub:
                    res.append(cut + ‘ ‘ + j)
        if s in wordDict:
            res.append(s)
        memory[s] = res #记住这个string有多少种拆分方法
        return res

单词拆分II

标签:nbsp   int   res   多少   调用   单词   返回   end   return   

原文地址:https://www.cnblogs.com/phinza/p/10313643.html

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