leetcode 241. Different Ways to Add Parentheses (Python版)

题目:

Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. The valid operators are+- and *.

大意是给定一个运算,求解所有运算序列的解

例如

Input: "2*3-4*5"

(2*(3-(4*5))) = -34
((2*3)-(4*5)) = -14
((2*(3-4))*5) = -10
(2*((3-4)*5)) = -10
(((2*3)-4)*5) = 10

Output: [-34, -14, -10, -10, 10]

算法思路:

将运算转换成栈过程,这样就将问题转换成一个递归问题

即每一步分为两种走法:

1)继续向栈中添加数字与运算符

2)弹出2个数字1个运算符进行计算

代码:

class Solution(object):
    def addOperatorAndNumber(self, inputList, stack):
        if len(inputList) < 2:
            return []
        stack.append(inputList[0])
        stack.append(inputList[1])

        inputList = inputList[2:]
        return self.calculate(inputList,stack)

    def calculateTopStack(self, inputList, stack):
        number1 = int(stack.pop())
        operator = stack.pop()
        number2 = int(stack.pop())

        if operator == "+":
            stack.append(number1 + number2)
        elif operator == "-":
            stack.append(number2 - number1)
        elif operator == "*":
            stack.append(number1 * number2)

        return self.calculate(inputList,stack)

    def calculate(self, inputList, stack):
        if len(stack) == 1:
            if len(inputList) == 0:
                return [stack[0]]
            else:
                return self.addOperatorAndNumber(inputList,stack)

        result1 = self.calculateTopStack(inputList[:], stack[:])
        result2 = self.addOperatorAndNumber(inputList[:],stack[:])

        result1.extend(result2)
        return result1

    def diffWaysToCompute(self, input):
        """
        :type input: str
        :rtype: List[int]
        """

        input = input.replace(‘+‘," + ")
        input = input.replace("-"," - ")
        input = input.replace("*"," * ")

        inputList = input.split(" ")
        stack = [int(inputList[0])]
        return  self.calculate(inputList[1:],stack)
时间: 2024-10-25 23:19:18

leetcode 241. Different Ways to Add Parentheses (Python版)的相关文章

LeetCode 241. Different Ways to Add Parentheses

241. Different Ways to Add Parentheses Add to List Description Submission Solutions Total Accepted: 38849 Total Submissions: 92740 Difficulty: Medium Contributors: Admin Given a string of numbers and operators, return all possible results from comput

(medium)LeetCode 241.Different Ways to Add Parentheses

Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. The valid operators are+, - and *. Example 1 Input: "2-1-1". ((2-1)-1) = 0 (2-(1-1)) = 2 Output: 

241. Different Ways to Add Parentheses

241. Different Ways to Add Parentheses https://leetcode.com/problems/different-ways-to-add-parentheses/ 思路就是:首先找到以运算符为根节点,分别计算左子串和右子串的所有结果的集合,然后依次进行组合计算.参考博客http://www.cnblogs.com/ganganloveu/p/4681439.html. 自己的思路错了,直接用两边只用了一个整数去接收左右子串的计算值!! #include

96. Unique Binary Search Trees &amp;&amp; 95. Unique Binary Search Trees II &amp;&amp; 241. Different Ways to Add Parentheses

96. Unique Binary Search Trees Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For example,Given n = 3, there are a total of 5 unique BST's. 1 3 3 2 1 \ / / / \ 3 2 1 1 3 2 / / \ 2 1 2 3 Tree Dynamic Program

[LeetCode][JavaScript]Different Ways to Add Parentheses

Different Ways to Add Parentheses Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. The valid operators are+, - and *. Example 1 Input: "2-1-1". ((

&lt;LeetCode OJ&gt; 241. Different Ways to Add Parentheses

Total Accepted: 23674 Total Submissions: 65569 Difficulty: Medium Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. The valid operators are+, - and *. E

【LeetCode】241. Different Ways to Add Parentheses

题目: Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. The valid operators are +, - and *. Example 1 Input: "2-1-1" ((2-1)-1) = 0 (2-(1-1)) = 2 Outp

[leedcode 241] Different Ways to Add Parentheses

Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. The valid operators are +,- and *. Example 1 Input: "2-1-1". ((2-1)-1) = 0 (2-(1-1)) = 2 Output: 

【Leetcode】Different Ways to Add Parentheses

题目链接: 题目: Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. The valid operators are+, - and *. Example 1 Input: "2-1-1". ((2-1)-1) = 0 (2-(1-1)) =