leetcode -- Different Ways to Add Parentheses -- 重点

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

你可能感兴趣的:(LeetCode)