leetcode 单词拆分 II python

把子字符串对应的分解方法都保存下来
时间复杂度还是高,贴出来记录一下

class Solution(object):
    def wordBreak(self, s, wordDict, thisBreak=[], tail_shortcuts={}, isRoot=True):
        """
        :type s: str
        :type wordDict: List[str]
        :rtype: List[str]
        """
        if isRoot:
            tail_shortcuts.clear()
        if len(s)==0:
            tail_shortcuts[s]=[]
            return []
        this_shortcuts=[]
        break_cur=1
        while (break_cur<=len(s)):
            if s[:break_cur] in wordDict:
                if isRoot:
                    thisBreak[:]=[]
                if s[break_cur:] not in tail_shortcuts:
                    self.wordBreak(s[break_cur:],wordDict,thisBreak+[s[:break_cur]],tail_shortcuts,False)
                if s[break_cur:]=='':
                    this_shortcuts.append([s[:break_cur]])
                else:
                    for shortcut in tail_shortcuts[s[break_cur:]]:
                        this_shortcuts.append([s[:break_cur]]+shortcut)
            break_cur+=1
        tail_shortcuts[s]=this_shortcuts
        if isRoot:
            return map(lambda x: " ".join(x), this_shortcuts)
        else:
            return None
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,800评论 1 32
  • 我们工作每天都会有一个晨会,当然周末偶尔休息。晨会的主题就是今天的工作重点,什么内容呢?大体三个,一是对昨天工作的...
    慧眼识鱼阅读 4,400评论 4 4
  • compose接受函数作为参数,从右向左执行,返回类型函数fn()全部参数传给最右边的函数,得到结果后传给倒数第二...
    _请输入昵称阅读 5,915评论 0 0
  • 文|张婷婷 今天做了一段关于生命故事的分享,讲自己的一段经历,然后思考这段经历带给自己的变化,如何影响自己,以及回...
    练习写作的人阅读 4,206评论 1 2
  • 我在办公室门外,种着些绿植,无非都是一些好养活的,吊兰、绿萝、长寿、水竹、佛手等等,它们吸取着大自然清新的空气,青...
    快乐的樱子阅读 2,241评论 1 3