https://leetcode.com/problems/different-ways-to-add-parentheses/
思路就是分治递归,看看code就知道思路了
参考http://www.tangjikai.com/algorithms/leetcode-241-different-ways-to-add-parentheses
这里其实不是要加括号,就是选择+,-,*这三个操作数的执行顺序。递归就可以了
class Solution(object):
def diffWaysToCompute(self, input):
"""
:type input: str
:rtype: List[int]
"""
ans = []
for i in range(len(input)):
c = input[i]
if c in '+-*':
a = self.diffWaysToCompute(input[:i])
b = self.diffWaysToCompute(input[i + 1:])
for m in a:
for n in b:
if c == '+':
ans.append(m + n)
elif c == '-':
ans.append(m - n)
elif c == '*':
ans.append(m * n)
if not ans:
ans.append(int(input))
return ans