leetcode--Different Ways to Add Parentheses

题目链接:https://leetcode.com/submissions/detail/86532557/

算法类型:分治法

题目分析:计算表达式的所有结果可能性

代码实现:

 1 class Solution(object):
 2     def diffWaysToCompute(self, input):
 3         """
 4         :type input: str
 5         :rtype: List[int]
 6         """
 7         def dfs(s, cache) :
 8             ops = {'+':lambda x,y:x+y, '-':lambda x,y:x-y, '*':lambda x,y:x*y}
 9             if not cache.has_key(s) :
10                 ret = []
11                 for k, v in enumerate(s) :
12                     if v in '+-*' :
13                         for left in dfs(s[:k], cache) :
14                             for right in dfs(s[k+1:], cache) :
15                                 ret.append(ops[v](left,right))
16                 if not ret :
17                     ret.append(int(s))
18                 cache[s] = ret
19             return cache[s]
20 
21         return dfs(input, {})

 

转载于:https://www.cnblogs.com/yang91/p/6222027.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值