241. Different Ways to Add Parentheses

class Solution(object):
    def __init__(self):
        self.res_hash=dict()
    def diffWaysToCompute(self, input):
        """
        :type input: str
        :rtype: List[int]
        """
        if input.isdigit():return [int(input)]
        
        if input in self.res_hash:
            print 'reused result for',input
            return self.res_hash[input]
            
        res=[]
        for i in range(len(input)):
            if input[i] in '+-*':
                res1=self.diffWaysToCompute(input[:i])
                res2=self.diffWaysToCompute(input[i+1:])
                for a in res1:
                    for b in res2:
                        res.append(self.helper(a,b,input[i]))
        self.res_hash[input]=res
        return res 
        
    def helper(self,num1,num2,operator):
        if operator=='+':
            return num1+num2
        elif operator=='-':
            return num1-num2
        else:
            return num1*num2
        
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容