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
        
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容